如何用Python裝飾器計(jì)算函數(shù)運(yùn)行時(shí)間?
網(wǎng)友解答: 裝飾器就是在代碼運(yùn)行期間,動(dòng)態(tài)增加原來(lái)函數(shù)功能的一 種函數(shù)。這里有兩個(gè)函數(shù),一個(gè)是裝飾函數(shù);另外一個(gè)是被裝飾函數(shù)。從本質(zhì)上 講,裝飾函數(shù)就是一個(gè)函數(shù),并且不能修改被裝飾函數(shù)的
裝飾器就是在代碼運(yùn)行期間,動(dòng)態(tài)增加原來(lái)函數(shù)功能的一 種函數(shù)。這里有兩個(gè)函數(shù),一個(gè)是裝飾函數(shù);另外一個(gè)是被裝飾函數(shù)。從本質(zhì)上 講,裝飾函數(shù)就是一個(gè)函數(shù),并且不能修改被裝飾函數(shù)的源代碼和調(diào)用方式。也 就是在不改變?cè)瓉?lái)函數(shù)的情況下,我們可以給函數(shù)擴(kuò)展更多的功能。
網(wǎng)友解答:有關(guān)裝飾器, 再次就不再解釋, 可以看我酷米上寫(xiě)的文章 Python裝飾器,鏈接:
https://www.toutiao.com/i6638012041099477517/使用裝飾器來(lái)計(jì)算函數(shù)運(yùn)行的時(shí)間,第一個(gè)思路就是在裝飾器中記錄函數(shù)執(zhí)行兩側(cè)的時(shí)間戳, 然后相減就可以得到函數(shù)的運(yùn)行時(shí)間, 如下所示:
可得到函數(shù)運(yùn)行的秒數(shù), 運(yùn)行結(jié)果如下:
在python中提供了一個(gè)用于測(cè)量代碼執(zhí)行時(shí)間的模塊, timeit,使用此模塊進(jìn)行測(cè)量, 修改剛才的裝飾器, 修改后的裝飾器如下:
運(yùn)行結(jié)果:
timeit模塊是用于測(cè)量小段代碼的執(zhí)行時(shí)間, 其方法如下:
只寫(xiě)出了幾個(gè)常用到的, 還有其他方法,可自行翻閱
當(dāng)然, 使用timeit模塊不適用裝飾器也是很方便的
以上, 就是簡(jiǎn)單的在python中使用裝飾器來(lái)測(cè)量代碼的運(yùn)行時(shí)間.