2012-04-24 43 views
2

在命令行中,我可以这样做:强制timeit自动选择次声明的次数执行

python -m timeit 'a = 1' 

根据文档:

如果-n没有给出一个合适的通过尝试10的连续功率 直到总时间至少0.2秒来计算回路数。

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

回答

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

这里是写一个包装替代:

import subprocess 
import sys 

subprocess.call([sys.executable, '-m', 'timeit', stmt]) 
+0

为什么这个答案downvoted?我没有看到任何明显的问题。 – max 2012-04-26 02:41:27