您好,登錄后才能下訂單哦!
這篇文章主要介紹python如何使用timeit時(shí)間模塊,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
timeit() 函數(shù)有四個(gè)參數(shù),每個(gè)參數(shù)都是關(guān)鍵字參數(shù),都有默認(rèn)值。
stmt:傳入需要測試時(shí)間的代碼,可以直接傳入代碼表達(dá)式或單個(gè)變量,也可以傳入函數(shù)。傳入函數(shù)時(shí)要在函數(shù)名后面加上小括號(hào),讓函數(shù)執(zhí)行,如 stmt = ‘func()' 。
setup:傳入 stmt 的運(yùn)行環(huán)境,如 stmt 中使用到的參數(shù)、變量,要導(dǎo)入的模塊等,如 setup = 'from __main__ import func'??梢詫懸恍姓Z句,也可以寫多行語句,寫多行語句時(shí)用分號(hào)隔開。
如果 stmt 和參數(shù) setup 參數(shù)不傳值,那么就失去了測試的意義,所以這兩個(gè)參數(shù)是必要的。
timer: timer參數(shù)是當(dāng)前操作系統(tǒng)的基本時(shí)間單位,默認(rèn)會(huì)根據(jù)當(dāng)前運(yùn)行環(huán)境的操作系統(tǒng)自動(dòng)獲取(源碼中已經(jīng)定義),保持默認(rèn)即可。
number:要測試的代碼的運(yùn)行次數(shù),默認(rèn)1000000(一百萬)次,對(duì)于耗時(shí)的代碼,運(yùn)行太多次會(huì)花很多時(shí)間,可以自己修改運(yùn)行次數(shù)。
repeat()函數(shù)有五個(gè)參數(shù),每個(gè)參數(shù)都是關(guān)鍵字參數(shù),都有默認(rèn)值。參數(shù)含義與timer()相同
repeat:表示測試要重復(fù)幾次,可以理解為將相同參數(shù)的 timeit() 函數(shù)重復(fù)執(zhí)行。最終的結(jié)果構(gòu)成一個(gè)列表返回,repeat 默認(rèn)為3次。
計(jì)算小段代碼執(zhí)行速度的類,構(gòu)造函數(shù)需要的參數(shù)有stmt,setup,timer。
前兩個(gè)參數(shù)的默認(rèn)值都是pass,timer默認(rèn)會(huì)根據(jù)當(dāng)前運(yùn)行環(huán)境的操作系統(tǒng)自動(dòng)獲?。磺皟蓚€(gè)參數(shù)都可以包含多個(gè)語句,多個(gè)語句間使用分號(hào);
或新行隔開
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))) # 直接傳入字符串對(duì)象 # list_l4 = timeit.timeit('li = [i for i in range(1000)]',number=1) # print(str(list_l4)) # 傳入多個(gè)函數(shù)對(duì)象(;或空行分隔) 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時(shí)間模塊”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。