19

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

>>> import timeit
>>> t = timeit.Timer("3**4**5")
>>> t.timeit()
16.55522028637718

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

4

4 回答 4

32

timeit()函数多次运行代码(默认为 100 万次)并取平均时间。

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

t.timeit(1)

但这会给你带来偏差的结果——它会重复是有充分理由的。

要获得让它重复的每循环时间,请将结果除以循环数。如果一百万太多,则使用较小的值作为重复次数:

count = 1000
print t.timeit(count) / count
于 2009-08-10T23:12:42.390 回答
6

因为 timeit 默认运行一百万次。关键是要做微基准测试,获得短事件准确计时的唯一方法是重复多次。

于 2009-08-10T23:13:25.943 回答
4

根据文档, Timer.timeit() 默认运行您的代码一百万次。使用“数字”参数更改此默认值:

t.timeit(number=100)

例如。

于 2009-08-10T23:18:12.970 回答
2

Timeit默认运行一百万次循环。

您还可能有操作顺序问题:(3**4)**5 != 3**4**5.

于 2009-08-10T23:18:49.303 回答