python:慢timeit()函数

HC.*_*HC. 16 python timer timeit

当我在timeit()之外运行下面的代码时,它似乎立即完成.但是当我在timeit()函数中运行它时,需要更长的时间.为什么?

>>> import timeit
>>> t = timeit.Timer("3**4**5")
>>> t.timeit()
16.55522028637718
Run Code Online (Sandbox Code Playgroud)

使用:Python 3.1(x86) - AMD Athlon 64 X2 - WinXP(32位)

Ric*_*dle 29

timeit()函数多次运行代码(默认为一百万)并取平均值.

要仅运行一次代码,请执行以下操作:

t.timeit(1)
Run Code Online (Sandbox Code Playgroud)

但这会给你带来不正确的结果 - 它有充分的理由重复.

为了让每个循环时间让它重复,将结果除以循环次数.如果一百万个过多,则使用较小的重复次数值:

count = 1000
print t.timeit(count) / count
Run Code Online (Sandbox Code Playgroud)

  • 是的!我还建议从命令行使用`python -mtimeit`而不是timeit作为模块 - 命令行版本有太多方便的小东西你不能从模块中获取(重复不同的次数取决于如何慢速/快速是你正在测量的,例如:一个伟大的微基准测试技术,可惜模块不提供它等等;-). (6认同)

Ned*_*der 6

因为timeit默认运行它一百万次.重点是做微观基准测试,获得短期事件准确时间的唯一方法是重复多次.