2

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

python -m timeit 'a = 1'

根据文档:

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

这很好用,但是在我的程序中使用时如何获得相同的行为timeit?如果我省略了调用的number参数timeit.timeit,它将默认为1000000.

4

2 回答 2

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
于 2012-04-24T16:41:25.430 回答
1

这是编写包装器的替代方法:

import subprocess
import sys

subprocess.call([sys.executable, '-m', 'timeit', stmt])
于 2012-04-24T16:47:34.787 回答