time.time vs. timeit.timeit

问题描述 投票:27回答:1

有时,我喜欢计算运行代码的部分时间。我已经检查了很多在线网站,并且已经看到了两种主要方法。一个使用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更快,有时速度更慢。哪种方式更好(更准确)?

python performance time python-3.x
1个回答
47
投票

timeit更准确,原因有三:

  • 它会多次重复测试,以消除机器上其他任务的影响,例如磁盘刷新和操作系统调度。
  • 它禁用垃圾收集器以防止该进程通过在不合适的时刻安排集合运行来扭曲结果。
  • 它为您的操作系统选择最准确的计时器,在Python 2中选择time.timetime.clock,在Python 3上选择time.perf_counter()。请参阅timeit.default_timer
© www.soinside.com 2019 - 2024. All rights reserved.