python使用timeit時間模塊
1. timeit.timeit(stmt=‘pass’, setup=‘pass’, timer=<default timer>, number=default_number)
- timeit() 函數有四個參數,每個參數都是關鍵字參數,都有默認值。
- stmt:傳入需要測試時間的代碼,可以直接傳入代碼表達式或單個變量,也可以傳入函數。傳入函數時要在函數名後面加上小括號,讓函數執行,如 stmt = ‘func()’ 。
- setup:傳入 stmt 的運行環境,如 stmt 中使用到的參數、變量,要導入的模塊等,如 setup = ‘from __main__ import func’。可以寫一行語句,也可以寫多行語句,寫多行語句時用分號隔開。
- 如果 stmt 和參數 setup 參數不傳值,那麼就失去瞭測試的意義,所以這兩個參數是必要的。
- timer: timer參數是當前操作系統的基本時間單位,默認會根據當前運行環境的操作系統自動獲取(源碼中已經定義),保持默認即可。
- number:要測試的代碼的運行次數,默認1000000(一百萬)次,對於耗時的代碼,運行太多次會花很多時間,可以自己修改運行次數。
2. timeit.repeat(stmt=”pass”, setup=”pass”, timer=default_timer, repeat=default_repeat, number=default_number)
- repeat()函數有五個參數,每個參數都是關鍵字參數,都有默認值。參數含義與timer()相同
- repeat:表示測試要重復幾次,可以理解為將相同參數的 timeit() 函數重復執行。最終的結果構成一個列表返回,repeat 默認為3次。
3. class timeit.Timer(stmt=‘pass’, setup=‘pass’, timer=<timer function>)
- 計算小段代碼執行速度的類,構造函數需要的參數有stmt,setup,timer。
- 前兩個參數的默認值都是pass,timer默認會根據當前運行環境的操作系統自動獲取;前兩個參數都可以包含多個語句,多個語句間使用分號
;
或新行隔開
import timeit def t1(): li = [i for i in range(100000)] def t2(): li = [] for i in range(100000): li += [i] def t3(): li = [] for i in range(100000): li.append(i) def t4(): li = [] list(range(100000)) def t5(): li = [] for i in range(100000): li.extend([i]) def t6(): li = [] for i in range(100000): li.insert(0,i) # 方式1:timeit.timeit() # list_t1 = timeit.timeit('t1()','from __main__ import t1',number=1) # print("i for i in range(100000): %s" %(list_t1)) # 方式2:timeit.repeat() # list_t2 = timeit.repeat('t2()','from __main__ import t2',repeat=1,number=1) # print("li += i: %s" %(str(list_t2))) # 方式3:timeit.Timer # timer3 = timeit.Timer('t3()','from __main__ import t3') # print("li.append(i): %s" %(timer3.timeit(number=1))) # 直接傳入字符串對象 # list_l4 = timeit.timeit('li = [i for i in range(1000)]',number=1) # print(str(list_l4)) # 傳入多個函數對象(;或空行分隔) list_l5 = timeit.repeat('t4();t5();t6()','from __main__ import t4;from __main__ import t5;from __main__ import t6',repeat=1,number=1) print(str(list_l5))
以上就是python使用timeit統計運行時間模塊的詳細內容,更多關於python使用timeit的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- None Found