首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >time.time与timeit.timeit

time.time与timeit.timeit
EN

Stack Overflow用户
提问于 2013-07-11 03:31:25
回答 2查看 26.5K关注 0票数 53

有时,我喜欢计时运行部分代码需要多长时间。我已经查看了很多在线网站,大体上看到了两种主要的方法。一个是使用time.time,另一个是使用timeit.timeit

所以,我写了一个非常简单的脚本来比较这两者:

代码语言:javascript
复制
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的结果

代码语言:javascript
复制
# 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有时更快,有时更慢。哪种方法更好(更准确)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-11 03:38:28

timeit更准确,原因有三:

  • it会多次重复测试,以消除计算机上其他任务(如磁盘刷新和操作系统调度)的影响。
  • it会禁用垃圾回收器,以防止该进程在不合适的时间安排收集运行而影响结果。
  • it会为您的操作系统选择最精确的计时器,在Python2中为time.timetime.clock,在Python3中为time.perf_counter()。请参阅Python
票数 77
EN

Stack Overflow用户

发布于 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.timetime.clock相比,它更准确、更可靠,因为它通过简单地重复执行测试来生成更可靠和准确的results.+,从而考虑了导致代码执行和试验之间差异的因素

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17579357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档