强制timeit自动选择执行语句的次数

时间:2012-04-24 16:32:34

标签: python python-3.x timeit

在命令行中,我可以这样做:

python -m timeit 'a = 1'

根据文件:

  

如果未给出-n,则通过尝试连续的幂来计算合适数量的循环   10,直到总时间至少为0.2秒。

这很好用,但在我的程序中使用timeit时如何才能获得相同的行为?如果我在number来电中省略timeit.timeit参数,则会默认为1000000

2 个答案:

答案 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])