欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python裝飾器實現(xiàn)函數(shù)運行時間的計算

 更新時間:2022年02月14日 08:41:44   作者:胖榴蓮  
這篇文章主要為大家詳細介紹了Python函數(shù)運行時間的計算,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

個人理解

裝飾器: 通過閉包和將一個函數(shù)作為另一個函數(shù)參數(shù)的形式,實現(xiàn)已有功能的靈活調(diào)用

例如:

首先設(shè)置了一個time_master的計時器函數(shù),在運行某個函數(shù)的同時,用來統(tǒng)計函數(shù)的耗時

那么,如果想知道函數(shù)性能, 每次寫完新的函數(shù)后,都放到time_master函數(shù)中運行一次來統(tǒng)計。

——> 這是比較麻煩的。相當(dāng)于雖然有了一個稱,但是所有的新買食材都需要逐個放到稱上去稱一遍,來獲得食材的重量

——> 如果能夠省略掉一次一次上稱這個步驟就好了

——> 比如每個食材進門的同時就從稱上走過,那進來的同時,也就有了重量的數(shù)據(jù)

例子:調(diào)用函數(shù)的同時對函數(shù)進行計時

實現(xiàn)方法1:@語法糖

代碼:

# 涉及到計時,需要引入time模塊
import time
# 定義一個對函數(shù)運行耗時統(tǒng)計的計時器,用func作為形參來代替需要統(tǒng)計的函數(shù)
def time_master(func):
    def call_func():
        print("計時器開始:函數(shù)開始調(diào)用:")
        start_time = time.time()
        func()
        end_time = time.time()
        print('計時器結(jié)束,函數(shù)調(diào)用完成')
        return print(f'計時器結(jié)果返回:函數(shù)調(diào)用耗時{end_time-start_time:.2f}')
    return call_func
@time_master 
# 即在調(diào)用myfunc函數(shù)時,不是直接調(diào)用myfunc
# 而是將myfunc函數(shù)作為一個參數(shù)放入到@的裝飾器中,然后去調(diào)用裝飾器
def myfunc():
    time.sleep(2)
    print('myfunc函數(shù)運行')
    time.sleep(4)
    print('myfunc函數(shù)運行結(jié)束')
myfunc()  # 調(diào)用myfunc

實現(xiàn)結(jié)果:

計時器開始:函數(shù)開始調(diào)用:
myfunc函數(shù)運行
myfunc函數(shù)運行結(jié)束
計時器結(jié)束,函數(shù)調(diào)用完成
計時器結(jié)果返回:函數(shù)調(diào)用耗時6.01

實現(xiàn)方法2:閉包

可以理解成,本來定義了一個myfunc的函數(shù),但這個函數(shù)本身沒有計時的功能,而恰巧有一個time_master的函數(shù),在運行子函數(shù)的同時,還會對子函數(shù)進行計時

因此,通過重新定義 myfunc = time_master(myfunc), 即將myfunc作為參數(shù)傳入到time_master中,作為myfunc函數(shù)的新定義

代碼:

import time
def time_master(func):
    def call_func():
        print("計時器開始:函數(shù)開始調(diào)用:")
        start_time = time.time()
        func()
        end_time = time.time()
        print('計時器結(jié)束,函數(shù)調(diào)用完成')
        print(f'計時器結(jié)果返回:函數(shù)調(diào)用耗時{end_time-start_time:.2f}')
    return call_func
def myfunc():
    time.sleep(2)
    print('myfunc函數(shù)運行')
    time.sleep(4)
    print('myfunc函數(shù)運行結(jié)束')
myfunc = time_master(myfunc)  # 和實現(xiàn)方法一的差距就在于是在myfunc前面@裝飾器,還是在后面對myfunc函數(shù)進行二次定義
myfunc()

實現(xiàn)結(jié)果:

計時器開始:函數(shù)開始調(diào)用:
myfunc函數(shù)運行
myfunc函數(shù)運行結(jié)束
計時器結(jié)束,函數(shù)調(diào)用完成
計時器結(jié)果返回:函數(shù)調(diào)用耗時6.01

實現(xiàn)方式1和 2的差異

實現(xiàn)方式1和實現(xiàn)方式2: 其實沒什么區(qū)別,無非是一開始就用@time_master來規(guī)定,還是定義完myfunc之后,再多做一步讓myfun放入time_master中去執(zhí)行

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!               

相關(guān)文章

  • Python創(chuàng)建普通菜單示例【基于win32ui模塊】

    Python創(chuàng)建普通菜單示例【基于win32ui模塊】

    這篇文章主要介紹了Python創(chuàng)建普通菜單,結(jié)合實例形式分析了Python基于win32ui模塊創(chuàng)建普通菜單及添加菜單項的相關(guān)操作技巧,并附帶說明了win32ui模塊的安裝命令,需要的朋友可以參考下
    2018-05-05
  • 跟老齊學(xué)Python之關(guān)于類的初步認識

    跟老齊學(xué)Python之關(guān)于類的初步認識

    這篇文章主要介紹了Python中關(guān)于類的一些術(shù)語解釋,雖然有些枯燥,但是要了解類的話,這些內(nèi)容是必須的
    2014-10-10
  • python函數(shù)常見關(guān)鍵字分享

    python函數(shù)常見關(guān)鍵字分享

    這篇文章主要向大家介紹的是python函數(shù)常見關(guān)鍵字,文章基于python的相關(guān)資料展開對文章主題的詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • 在Python的Django框架中更新數(shù)據(jù)庫數(shù)據(jù)的方法

    在Python的Django框架中更新數(shù)據(jù)庫數(shù)據(jù)的方法

    這篇文章主要介紹了在Python的Django框架中更新數(shù)據(jù)庫數(shù)據(jù),對此Django框架中提供了便利的插入和更新方法,需要的朋友可以參考下
    2015-07-07
  • dataframe 按條件替換某一列中的值方法

    dataframe 按條件替換某一列中的值方法

    今天小編就為大家分享一篇dataframe 按條件替換某一列中的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 解決python虛擬環(huán)境切換無效的問題

    解決python虛擬環(huán)境切換無效的問題

    這篇文章主要介紹了解決python虛擬環(huán)境切換無效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python實現(xiàn)模擬時鐘代碼推薦

    Python實現(xiàn)模擬時鐘代碼推薦

    本文給大家匯總介紹了下使用Python實現(xiàn)模擬時鐘的代碼,一共3個例子,后兩個是基于QT實現(xiàn),有需要的小伙伴可以參考下
    2015-11-11
  • python的類class定義及其初始化方式

    python的類class定義及其初始化方式

    這篇文章主要介紹了python的類class定義及其初始化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 使用matplotlib畫圖自定義marker

    使用matplotlib畫圖自定義marker

    這篇文章主要介紹了使用matplotlib畫圖自定義marker問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 玩轉(zhuǎn)Python圖像處理之二值圖像腐蝕詳解

    玩轉(zhuǎn)Python圖像處理之二值圖像腐蝕詳解

    這篇文章主要給大家介紹了關(guān)于Python圖像處理之二值圖像腐蝕的相關(guān)資料,對原圖進行二值化后,選擇不同的結(jié)構(gòu)元素對其進行膨脹和腐蝕運算處理,并仿真出圖像結(jié)果,需要的朋友可以參考下
    2021-09-09

最新評論