在命令行中,我可以这样做:
python -m timeit 'a = 1'
根据文档:
如果未给出 -n,则通过尝试连续的 10 次方来计算合适的循环次数,直到总时间至少为 0.2 秒。
这很好用,但是在我的程序中使用时如何获得相同的行为timeit
?如果我省略了调用的number
参数timeit.timeit
,它将默认为1000000
.
在命令行中,我可以这样做:
python -m timeit 'a = 1'
根据文档:
如果未给出 -n,则通过尝试连续的 10 次方来计算合适的循环次数,直到总时间至少为 0.2 秒。
这很好用,但是在我的程序中使用时如何获得相同的行为timeit
?如果我省略了调用的number
参数timeit.timeit
,它将默认为1000000
.
文档并没有表明存在这样的功能,我假设不存在。幸运的是,为您定义一个包装器并不难:
import timeit
def auto_timeit(stmt='pass', setup='pass'):
n = 1
t = timeit.timeit(stmt, setup, number=n)
while t < 0.2:
n *= 10
t = timeit.timeit(stmt, setup, number=n)
return t / n # normalise to time-per-run
这是编写包装器的替代方法:
import subprocess
import sys
subprocess.call([sys.executable, '-m', 'timeit', stmt])