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其它相關文章!