2012-04-24 40 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