Python中如何使用timeit模块检查某一条语句的执行时间?
比如:
list1 = [ 'aaa', 'bbb', 'ccc, 'ddd', 'eee' ]
if x in list1:
pass
想要监测系统在执行过程中,上面这条 if 语句执行消耗了多少时间,用 timeit 怎么查看?
Python中如何使用timeit模块检查某一条语句的执行时间?
使用 time 模块就好了
用timeit模块测单条语句的执行时间,最直接的方法是用timeit.timeit()函数。下面给个具体例子:
import timeit
# 要测试的语句,这里用字符串形式给出
stmt = "[x**2 for x in range(1000)]"
# 执行1000次,取总时间
execution_time = timeit.timeit(stmt, number=1000)
print(f"执行1000次总耗时: {execution_time:.6f} 秒")
print(f"平均每次耗时: {execution_time/1000:.6f} 秒")
如果你要在测试代码里用变量,可以加上setup参数:
import timeit
setup_code = "n = 1000"
stmt = "[x**2 for x in range(n)]"
execution_time = timeit.timeit(stmt, setup=setup_code, number=500)
print(f"执行500次耗时: {execution_time:.6f} 秒")
还有个更简单的办法,直接在命令行里跑:
python -m timeit "[x**2 for x in range(1000)]"
总结建议:用timeit比手动算时间更准。
开头一时间
结束一时间
然后相减(?)
第一反应也是连个 time 相减
ipython
%timeit 最简单了
timeit.timeit(“if x in list1: pass”, “x=‘aaa’; list1=[‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’]”)
官方文档:timeit.timeit(stmt=‘pass’, setup=‘pass’, timer=<default timer>, number=1000000)
你如果要看一次
timeit.timeit(“if x in list1: pass”, “x=‘aaa’; list1=[‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’]”, number=1)
不过一般不这样干吧。。。
In [6]: %paste
import timeit
setup = "list1 = [ ‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’ ]“
stmt = “if ‘x’ in list1: pass"
t = timeit.Timer(stmt=stmt, setup=setup)
n = 1
print(”{0:.3f}”.format(t.timeit(number=n)/n))
n = 10
print(t.timeit(number=n)/n)
n = 10000
print(t.timeit(number=n)/n)
n = 1000000
print(t.timeit(number=n)/n)
## – End pasted text –
0.000
1.3518072108809065e-06
8.570457728040992e-07
1.0187274455574879e-06
如果用 ipython 的话,可以开启自动监测运行时间的功能


