python: timeit() 函数慢

19 投票
4 回答
9022 浏览
提问于 2025-04-15 13:31

当我在不使用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

根据文档,Timer.timeit() 默认会把你的代码运行一百万次。如果你想改变这个默认值,可以使用“number”这个参数:

t.timeit(number=100)

举个例子。

6

因为timeit默认会运行一百万次。这样做的目的是为了进行微型基准测试,而要准确测量短时间的事件,唯一的方法就是多次重复它们。

33

timeit() 函数会把你的代码运行很多次(默认是一百万次),然后计算这些运行时间的平均值。

如果你只想运行一次代码,可以这样做:

t.timeit(1)

不过这样得到的结果可能不太准确,因为它重复运行是有原因的。

如果你想知道每次循环的时间,可以把结果除以循环的次数。如果一百万次太多了,可以用一个更小的重复次数:

count = 1000
print t.timeit(count) / count

撰写回答