最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

個人理解

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

例如:

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

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

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

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

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

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

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

代碼:

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

實現(xiàn)結果:

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

實現(xiàn)結果:

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

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

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

總結

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

相關文章

  • 利用numpy和pandas處理csv文件中的時間方法

    利用numpy和pandas處理csv文件中的時間方法

    下面小編就為大家分享一篇利用numpy和pandas處理csv文件中的時間方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python通過tcp發(fā)送xml報文的方法

    python通過tcp發(fā)送xml報文的方法

    今天小編就為大家分享一篇python通過tcp發(fā)送xml報文的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 通過實例了解Python異常處理機制底層實現(xiàn)

    通過實例了解Python異常處理機制底層實現(xiàn)

    這篇文章主要介紹了通過實例了解Python異常處理機制底層實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Python第三方常用模塊openpyxl的簡單介紹

    Python第三方常用模塊openpyxl的簡單介紹

    openpyxl模塊是一個讀寫Excel?2010文檔的Python庫,如果要處理更早格式的Excel文檔,需要用到額外的庫,openpyxl是一個比較綜合的工具,能夠同時讀取和修改Excel文檔,下面這篇文章主要給大家介紹了關于Python第三方常用模塊openpyxl的相關資料,需要的朋友可以參考下
    2022-08-08
  • 使用python實現(xiàn)滑動驗證碼功能

    使用python實現(xiàn)滑動驗證碼功能

    這篇文章主要介紹了使用python實現(xiàn)滑動驗證碼功能,本文通過示例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • python編寫簡單爬蟲資料匯總

    python編寫簡單爬蟲資料匯總

    本文給大家匯總介紹了下幾種使用Python編寫簡單爬蟲的方法和代碼,非常的不錯,這里分享給大家,希望大家能夠喜歡。
    2016-03-03
  • FP-growth算法發(fā)現(xiàn)頻繁項集——發(fā)現(xiàn)頻繁項集

    FP-growth算法發(fā)現(xiàn)頻繁項集——發(fā)現(xiàn)頻繁項集

    常見的挖掘頻繁項集算法有兩類,一類是Apriori算法,另一類是FP-growth。Apriori通過不斷的構造候選集、篩選候選集挖掘出頻繁項集,需要多次掃描原始數(shù)據(jù),當原始數(shù)據(jù)較大時,磁盤I/O次數(shù)太多,效率比較低下
    2021-06-06
  • Python類的繼承、多態(tài)及獲取對象信息操作詳解

    Python類的繼承、多態(tài)及獲取對象信息操作詳解

    這篇文章主要介紹了Python類的繼承、多態(tài)及獲取對象信息操作,結合實例形式較為詳細的分析了Python面向對象程序設計中類、繼承、多態(tài)等相關操作技巧與注意事項,需要的朋友可以參考下
    2019-02-02
  • 將python字符串轉化成長表達式的函數(shù)eval實例

    將python字符串轉化成長表達式的函數(shù)eval實例

    這篇文章主要介紹了將python字符串轉化成長表達式的函數(shù)eval實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python生成直方圖方法實現(xiàn)詳解

    Python生成直方圖方法實現(xiàn)詳解

    這篇文章主要介紹了python OpenCV圖像直方圖處理,文章通過matplotlib畫一個直方圖展開詳情,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-11-11

最新評論

龙门县| 启东市| 鄂伦春自治旗| 西青区| 泸水县| 大竹县| 东阿县| 扶沟县| 哈巴河县| 娄底市| 措勤县| 汤原县| 固始县| 荣昌县| 时尚| 富宁县| 衡水市| 突泉县| 尤溪县| 宜都市| 红河县| 永嘉县| 吉水县| 瑞金市| 溧水县| 珲春市| 天等县| 夏邑县| 乌拉特中旗| 南江县| 固始县| 任丘市| 且末县| 江北区| 祁阳县| 无锡市| 重庆市| 栾城县| 基隆市| 徐州市| 姜堰市|