iCo*_*dez 30 python performance time python-3.x
有时,我喜欢计算运行代码的部分时间.我已经检查了很多在线网站,并且已经看到了两种主要方法.一个是使用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))
Run Code Online (Sandbox Code Playgroud)
基本上,它计算在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
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,有时候,time.time更快,有时速度更慢.哪种方式更好(更准确)?
Mar*_*ers 51
timeit
更准确,原因有三:
time.time
或者time.clock
在Python 2和time.perf_counter()
Python 3中选择最准确的计时器timeit.default_timer
.在任何给定时间,中央处理单元 (CPU) 都会被许多进程使用和共享。使用的测量结果与我们所说的挂钟time.time
有关。这意味着结果取决于执行测试时正在运行的其他进程。因此,在许多情况下,产生的结果并不尽可能准确。time.time
time.clock
使用Python 2.x 和 time.process_time()
/或Python 3.X可以生成更可靠的结果time.perf_counter()
,这些结果测量代码执行期间使用的 CPU 周期,但即使是这种方法,因为它严重依赖于您正在执行测试的特定机器。例如,如果测试在不同的机器上执行,结果可能会有很大差异(即使算法和输入数据完全相同)
timeit.timeit
是一个先进的库,相比之下更加准确和可靠,time.time
因为time.clock
它考虑了造成代码执行和试验之间差异的因素,通过简单地重复执行测试来产生更可靠和准确的结果。+