有时,我喜欢计时运行部分代码需要多长时间。我已经查看了很多在线网站,大体上看到了两种主要的方法。一个是使用time.time,另一个是使用timeit.timeit。
所以,我写了一个非常简单的脚本来比较这两者:
from timeit import timeit
from time import time
start = time()
for i in range(100): print('ABC')
print(time()-start, timeit("for i in range(100): print('ABC')", number=1))基本上,它是在for循环中打印"ABC“100次所需时间的倍数。左边的数字是time.time的结果,右边的数字是timeit.timeit的结果
# First run
0.0 0.012654680972022981
# Second run
0.031000137329101562 0.012747430190149865
# Another run
0.0 0.011262325239660349
# Another run
0.016000032424926758 0.012740166697164025
# Another run
0.016000032424926758 0.0440628627381413正如您所看到的,time.time有时更快,有时更慢。哪种方法更好(更准确)?
发布于 2013-07-11 03:38:28
timeit更准确,原因有三:
time.time或time.clock,在Python3中为time.perf_counter()。请参阅Python发布于 2020-05-03 23:30:00
在任何给定的时间,中央处理单元(CPU)被许多进程使用和共享。使用time.time进行的测量是相对于我们所说的挂钟的。这意味着结果依赖于执行测试时正在运行的其他进程。因此,在许多情况下,time.time产生的结果并不是尽可能准确。
使用Python2.x的time.clock和Python3.x的time.process_time()或time.perf_counter()可以生成更可靠的结果,这些方法测量代码执行期间使用的CPU周期,但即使是这种方法,因为它在很大程度上依赖于执行测试的特定机器。例如,如果测试在不同的机器上执行,结果可能会有很大的不同(即使算法和输入数据完全相同)
timeit.timeit是一个高级的库,与time.time和time.clock相比,它更准确、更可靠,因为它通过简单地重复执行测试来生成更可靠和准确的results.+,从而考虑了导致代码执行和试验之间差异的因素
https://stackoverflow.com/questions/17579357
复制相似问题