裝飾器應用之統計程序的運行時間

在做性能優化時,我們往往會統計程序的運行時長,以此作爲優化好壞的依據之一。
一般做法是,在程序運行前得到一個開始時間,在程序主體結束後再得到一個結束時間,計算兩者差值,得到運行時長。如下:

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實用特性】- 迭代、可迭代對象、迭代器

[2] 【python實用特性】- 列表生成式

[3] 【python實用特性】- yield生成器

[4] 【python實用特性】- 裝飾器

[5] 【Matplotlib】-自定義座標軸刻度完成20萬+數據的可視化

[6] Python+selenium實現自動爬取實例

[7] python爬取豆瓣Top250-改進版

[8] requests設置請求頭、代理

[9] requests使用session保持會話

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章