程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python: 測量代碼運行時間

編輯:Python

測量代碼運行所需時間主要有兩種方法,使用 time.time() ,這是通用的方法,或者使用 timeit.timeit() 測量小的代碼段。

1 time()

這是通用方法:

import time
def powers(limit):
return [x**2 for x in range(limit)]
start = time.time()
powers(5000000)
end = time.time()
print(end-start) # 1.0257349014282227 (秒)

或者將測量時間的相關代碼放到一個高階函數 measure_runtime 中,接受函數作為參數,可以測量任意函數運行所需時間:

import time
def measure_runtime(func):
time_start = time.time()
func()
time_end = time.time()
print(time_end - time_start)
def powers(limit):
return [x**2 for x in range(limit)]
measure_runtime(lambda: powers(5000000)) # 1.006134033203125 秒

2 timeit()

此函數用於測量小的代碼段運行所需時間:

此函數有5個參數:

timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000, globals=None)
timeit.timeit(stmt='', setup='', timer=time.perf_counter, number=1000000, globals=None)

stmt 是待測代碼段,setup 作用類似於初始化代碼段中變量,在 stmt 之前執行,number 如果不設置,那麼 stmt 默認執行1000000 即一百萬次,如果 stmt 執行一次需要 1 秒,一百萬秒是非常長的時間,所以 number 參數一般應該設置。
用法:

import timeit
print(timeit.timeit("[x**2 for x in range(5000000)]", number=4))
print(timeit.timeit("list(map(lambda x: x**2, range(100)))", setup="", number=10000))
print(timeit.timeit(stmt='while x < 1000000: x += 1', setup='x = 0', number = 10000))

運行結果:

4.101922899999408 # number = 4, 測了4 次,共用了4 秒
0.23630119999870658
0.03228399999898102

timeit.timeit() 除以 number, 將得到 stmt 執行一次所需的平均時間


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved