壹種簡單的方法是定義壹個裝飾器來測量函數的執行時間並輸出結果:
導入時間
從函數工具導入包裝
隨機導入
def fn_timer(函數):
?@wraps(函數)
?def function_timer(*args,**kwargs):
?t0= time.time()
?result= function(*args,**kwargs)
?t1= time.time()
?print("運行%s的總時間:%s秒" %
?(功能。__name__,str(t1- t0))
)
?回送結果
返回函數_定時器
@ fn _定時器
定義隨機排序(n):
?返回排序後的結果([random . random()for I in range(n)])
if __name__== "__main__ ":
?隨機排序(2000000)
輸出:運行random _ sort的總時間:0.59060秒。
要使用它,只需將@fn_timer添加到要監控的函數定義中。
或者
#監控程序的運行時間
導入時間
隨機導入
定義時鐘(函數):
def包裝(*args,**kwargs):
start_time= time.time()
result= func(*args,**kwargs)
end_time= time.time()
打印(" * * * Time:% s seconds " % round(end _ Time-start _ Time,5))
回送結果
返回包裝
@時鐘
定義隨機排序(n):
?返回排序後的結果([random . random()for I in range(n)])
if __name__== "__main__ ":
?隨機排序(2000000)
輸出結果:* *時間:0.65634秒。
2.使用timeit模塊
另壹種方法是使用timeit模塊來計算平均時間消耗。
執行以下腳本來運行該模塊。
這裏的Timing_functions是Python腳本文件的名稱。
在輸出的最後,您可以看到以下結果:4?循環,最好的?5:?2.08?每循環秒
這意味著測試進行了四次,平均每個測試重復五次。最好的測試成績是2.08秒。
如果不指定測試或重復次數,默認值為10次測試,每次重復5次。
3.在Unix系統中使用time命令。
然而,decorator和timeit都是基於Python的。在外部環境中測試Python時,Unix時間實用程序非常有用。
運行時間實用程序:
輸出結果是:
總計?時間運行隨機_排序:?1.3931210041?秒
真實的?1.49
用戶?1.40
sys?0.08
第壹行來自預定義的裝飾器,其他三行是:
?Real表示執行腳本的總時間。
?User表示執行腳本所消耗的CPU時間。
?Sys表示執行內核函數所花費的時間。
註:根據維基百科的定義,內核是壹種計算機程序,用於管理軟件的輸入輸出,並將其翻譯成其他計算機中的CPU和電子設備可以執行的數據處理指令。
因此,實際執行時間與User+Sys執行時間之差就是系統執行輸入/輸出和其他任務所消耗的時間。
4.使用cProfile模塊
5.使用line_profiler模塊
6.使用memory_profiler模塊
使用孔雀魚包裝