python萬能裝飾器實現計算函數的調用次數和執行時間

直接上代碼

# python萬能裝飾器實現計算函數的調用次數和執行時間
import time


def set_fun(func):
    num = 0  # 初始化次數

    def call_fun(*args, **kwargs):
        nonlocal num # 聲明num 變當前作用域局部變量爲最臨近外層(非全局)作用域變量。
        start = time.time()  # 代碼執行開始時間
        num += 1 # 每次調用次數加1
        print("測試功能:")
        func(*args, **kwargs) # 原函數
        end = time.time() # 代碼執行結束時間
        longtime = end - start
        print("此函數被調用%s次,本次調用花費時間:%s" % (num, longtime))

    return call_fun


@set_fun
def test():
    print("測試中~~~~~")
    time.sleep(1)

# 在這裏調用三次函數
test()
test()
test()

運行效果如下

測試功能:
測試中~~~~~
此函數被調用1次,本次調用花費時間:1.0134446620941162
測試功能:
測試中~~~~~
此函數被調用2次,本次調用花費時間:1.0088226795196533
測試功能:
測試中~~~~~
此函數被調用3次,本次調用花費時間:1.0122005939483643
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章