在做性能優化時,我們往往會統計程序的運行時長,以此作爲優化好壞的依據之一。
一般做法是,在程序運行前得到一個開始時間,在程序主體結束後再得到一個結束時間,計算兩者差值,得到運行時長。如下:
import time
def test():
start = time.time()
t = [i for i in range(10000*100)] #生成100萬個整數元素的列表
end = time.time()
print('用時:%4.2f'%(end-start))
看起來沒啥問題,但有大量函數需要統計時,如果每個函數都這樣寫,那就不符合python
簡潔、優雅的特性了。
這個時候,使用裝飾器
便能很好地解決這一問題。改寫如下:
import time
from functools import wraps
'''
運行時間統計裝飾器
'''
def calcu_run_time(func):
@wraps(func)
def calcu_wrapper(*args,**kwargs):
start = time.time()
func(*args,**kwargs)
print('執行函數%s用時:%4.2f'%(func.__name__,time.time()-start))
return calcu_wrapper
#使用裝飾器
@calcu_run_time
def test():
t = [i for in range(10000*100)]
test()
結果:
執行函數test用時:0.20秒
博主其他文章推薦:
[1] 【python實用特性】- 迭代、可迭代對象、迭代器
[5] 【Matplotlib】-自定義座標軸刻度完成20萬+數據的可視化
[8] requests設置請求頭、代理