当前位置: 首页 > 面试题库 >

time.time与timeit.timeit

夹谷承安
2023-03-14
问题内容

有时候,我想花点时间运行我的代码的一部分。我已经检查了许多在线站点,并大致看到了两种主要方法。一个正在使用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更快,有时更慢。哪种方法更好(更准确)?


问题答案:

timeit 更准确,原因有以下三个:

  • 它会重复测试多次,以消除其他任务对计算机的影响,例如磁盘刷新和操作系统调度。
  • 它禁用了垃圾收集器,以防止该进程通过安排在不适当的时刻运行收集而使结果不正确。
  • 它为您的OStime.timetime.clockPython 2和time.perf_counter()Python 3选择最准确的计时器。请参见timeit.default_timer


 类似资料:
  • 描述 (Description) 方法time()将时间作为以UTC为单位以秒为单位表示的浮点数返回。 Note - 即使始终将时间作为浮点数返回,并非所有系统都提供精度高于1秒的时间。 虽然此函数通常返回非递减值,但如果在两次调用之间设置了系统时钟,则它可以返回比先前调用更低的值。 语法 (Syntax) 以下是time()方法的语法 - time.time() 参数 (Parameters)

  • 问题内容: 在Python中使用哪个计时更好?)或?哪一个提供更高的准确性? 例如: 与 问题答案: 作为已被弃用,并且它建议使用或来代替。 早于2.7,根据时间模块docs: 在Unix上,以秒为单位返回当前处理器时间,以浮点数表示。精度(实际上是“处理器时间”的含义的确切定义)取决于同名C函数的精度,但是无论如何,这是用于基准化Python或计时算法的函数。 在Windows上,此函数将基于W

  • 问题内容: 这是来自Apache日志的示例日期: 我已经成功地将其解析为year(int),month(time.Month),day(int),hour(int),minute(int),second(int)和timezone(string)。 如何构造time.Time,使其包含时区偏移量? 这是我到目前为止的内容: 我应该用什么代替?或在这里不合适。 问题答案: 您可以使用构造具有固定偏移

  • 问题内容: 在围棋文档说(强调): 使用时间的程序通常应将其存储并 作为值(而不是指针) 传递。也就是说,时间变量和结构字段的类型应该是time.Time,而不是* time.Time。一个时间值可以同时被多个goroutine使用。 最后一句话(关于在多个goroutine中同时使用Time值)是否是“通常”应将它们作为值而不是指针“存储”并传递的唯一原因?这对于其他结构也是常见的吗?我尝试寻找

  • 问题内容: 我有一个mongo文档,其中包含一个日期字段,该日期字段也可以为false(或未定义),并且似乎无法找到如何检查该字段是否可用或为false或是否为日期(time.Time)的日期golang / mgo:S 问题答案: 如果您有一个字段,并且想知道它是否正确地设置了有效日期,则可以查询其方法。否则,如果您要在数据库中查询此类文档,则可以执行以下操作之一。 查询该字段是否为假: 使用$

  • 问题内容: 在Python中,如何将a转换为从函数中获得的那种? 问题答案: 使用时间元组方法并保留微秒并不难: