在命令行中,我可以这样做:
python -m timeit 'a = 1'
根据文件:
如果未给出-n,则通过尝试连续的幂来计算合适数量的循环 10,直到总时间至少为0.2秒。
这很好用,但在我的程序中使用timeit
时如何才能获得相同的行为?如果我在number
来电中省略timeit.timeit
参数,则会默认为1000000
。
答案 0 :(得分:4)
文档并没有明显表明存在这样的功能,我认为没有。幸运的是,定义一个为你做的包装并不是太难:
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
答案 1 :(得分:1)
这是编写包装器的替代方法:
import subprocess
import sys
subprocess.call([sys.executable, '-m', 'timeit', stmt])