1. 简介

27.5. timeit — Measure execution time of small code snippets

Source code: Lib/timeit.py

timeit模块可以用来测试一段代码的执行耗时,如一个变量赋值语句的执行时间,一个函数的运行时间。

timeit是标准模块,无需安装。

import timeit

1.1. python interface

模块定义了三个方法和一个公共类。

1.1.1. timeit.timeit(stmt='pass', setup='pass', timer=, number=1000000, globals=None)

Create a Timer instance with the given statement, setup code and timer function and run its timeit() method with number executions. The optional globals argument specifies a namespace in which to execute the code.

参数说明:

  • stmt:测试代码,一般用函数(可以用字符串表达式)。
  • setup:传入stmt的运行环境,如参数,变量,模块。
  • timer:
  • number:执行次数,默认1000000
  • globals:

1.1.2. timeit.repeat(stmt='pass', setup='pass', timer=, repeat=3, number=1000000, globals=None)

Create a Timer instance with the given statement, setup code and timer function and run its repeat() method with the given repeat count and number executions. The optional globals argument specifies a namespace in which to execute the code.

参数说明:

  • repeat:重复次数,每次的结果构成列表返回,默认3次。

1.1.3. timeit.default_timer()

The default timer, which is always time.perf_counter().

Changed in version 3.3: time.perf_counter() is now the default timer.

1.1.4. class timeit.Timer(stmt='pass', setup='pass', timer=, globals=None)

Class for timing execution speed of small code snippets.

2. 案例

2.1. timeit() /repeat()

注意事项:

  1. 方法应在setup参数中导入;
  2. 变量需在setup参数中导入,且变量应为全局变量或直接传入;
  3. 测试次数number默认为10**6,注意修改,特别是单次执行时间较长时。
import timeit

def _test_timeit():
global a # timeit
a = [1,2,3,4]
t = timeit.timeit(stmt='_test_2(a)',
setup='from __main__ import _test_2, a',
number=100000)
print(t) # repeat
a = [1,2,3,4]
t = timeit.repeat(stmt='_test_2(a)',
setup='from __main__ import _test_2, a',
number=1000000,
repeat=5 )
print(t) def _test_2(s=None, *ar):
#s.insert(0, 45)
s.append(55) if __name__ == '__main__':
a = None
_test_timeit()
pass

输出:

0.02622983706364665
[0.28630844773090425, 0.2964419925588122, 0.23573263042489412, 0.2578145301438086, 0.22425034115163478]

说明:

repeat()与timeit()的区别在于它会重复测试多次,返回单次执行时间所组成的列表。

2.2. timer()

timer()实质是timeit()和repeat()的底层实现;

def timeit(stmt="pass", setup="pass", timer=default_timer,
number=default_number, globals=None):
"""Convenience function to create Timer object and call timeit method."""
return Timer(stmt, setup, timer, globals).timeit(number) def repeat(stmt="pass", setup="pass", timer=default_timer,
repeat=default_repeat, number=default_number, globals=None):
"""Convenience function to create Timer object and call repeat method."""
return Timer(stmt, setup, timer, globals).repeat(repeat, number)

也可以使用Timer()初始化然后调用其方法timeit和repeat。

python lib timeit 测试运行时间的更多相关文章

  1. C#测试运行时间

    System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start(); //开始监视代码运行时间 ...

  2. python解无忧公主的数学时间编程题001.py

    python解无忧公主的数学时间编程题001.py """ python解无忧公主的数学时间编程题001.py http://mp.weixin.qq.com/s?__b ...

  3. python解无忧公主的数学时间097.py

    python解无忧公主的数学时间097.py """ python解无忧公主的数学时间097.py codegay 2016年3月30日 00:17:26 http:// ...

  4. Python实现进度条和时间预估的示例代码

    一.前言 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...

  5. python设置socket的超时时间(可能使用locust压测千级并发的时候要用到,先记录在此)

    在使用urllib或者urllib2时,有可能会等半天资源都下载不下来,可以通过设置socket的超时时间,来控制下载内容时的等待时间. 如下python代码 import socket timeou ...

  6. python之timeit模块

    timeit模块: timeit 模块定义了接受两个参数的 Timer 类.两个参数都是字符串. 第一个参数是你要计时的语句或者函数. 传递给 Timer 的第二个参数是为第一个参数语句构建环境的导入 ...

  7. python常用标准库(时间模块 time和datetime)

    常用的标准库 time时间模块 import time time -- 获取本地时间戳 时间戳又被称之为是Unix时间戳,原本是在Unix系统中的计时工具. 它的含义是从1970年1月1日(UTC/G ...

  8. Python学习总结15:时间模块datetime & time & calendar (二)

    二 .datetime模块  1. datetime中常量 1)datetime.MINYEAR,表示datetime所能表示的最小年份,MINYEAR = 1. 2)datetime.MAXYEAR ...

  9. Python学习总结14:时间模块datetime & time & calendar (一)

    Python中的常用于处理时间主要有3个模块datetime模块.time模块和calendar模块. 一.time模块 1. 在Python中表示时间的方式 1)时间戳(timestamp):通常来 ...

随机推荐

  1. numpy 中array 和ndrray的区别联系

    numpy.array()  标明array只是一个方法 ndarray 是类名,是一个实例. a=numpy.array(b)    #这是把变量b转换为数组a,这里array()是个方法,a的类型 ...

  2. C++常用字符串操作和UTF-8和GBK之间的转换以及判定(转)

    编码转换原文地址:https://www.cnblogs.com/Toney-01-22/p/9935297.html C++字符串常用操作:C++ 中字符串查找.字符串截取.字符串替换

  3. HCTF2018-admin[flask session 伪造]

    知识点:flask session 伪造 flask中session是存储在客户端cookie中的,也就是存储在本地.flask仅仅对数据进行了签名.众所周知的是,签名的作用是防篡改,而无法防止被读取 ...

  4. django orm查询和后端缓存的使用

    django orm 查询 1 字段后(db_column='age') (null=True)#表示数据库里面的该字段数据可以为空 (blank=True)#表示前端表单提交的时候可以为空 (db_ ...

  5. [CodeIgniter4]故障排除和本地开发服务器

    故障排除 以下是一些常见的安装问题,以及建议的解决方法. 我必须在我的URL中包含index.php 如果``/mypage/find/apple``类似的URL``/index.php/mypage ...

  6. webrtc vp8与h264 sdp文件解读

    参考地址:https://blog.csdn.net/zhangjikuan/article/details/27367437, https://www.cnblogs.com/idignew/p/7 ...

  7. helm安装异常解决方案

    问题1:helm version正常 helm list 异常报错如下 解决方法: [root@MASTER1 ~]# helm init --service-account tiller --til ...

  8. word文档巧替换(空行替换、空格替换、软回车替换成硬回车)

    一.空行替换 在日常工作中,我们经常从网上下载一些文字材料,往往因空行多使得页数居高不下.一般方法是:在“编辑”菜单中打开“查找和替换”对话框(或按ctrl+H),在“查找内容”中输入“^p^p”“替 ...

  9. Java第一个程序HelloWorld

    1.创建一个java源文件:HelloWorld.java public class HelloWorld{ public static void main(String[] args){ Syste ...

  10. DE1-soc软件实验”hello_word"

    此实验需要工具:win32disk,路由器,sd卡,Embeed Design suite, Putty,usb to uart 驱动 选择文件,在拷贝到sd卡中去:烧写的文件是官方提供的SD卡的程序 ...