日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python: 使用装饰器“@”取得函数执行时间

發(fā)布時(shí)間:2023/12/19 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python: 使用装饰器“@”取得函数执行时间 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

class A():

Python: 使用裝飾器“@”取得函數(shù)執(zhí)行時(shí)間 - oldJ的學(xué)習(xí)筆記 - 博客頻道 - CSDN.NET

Python: 使用裝飾器“@”取得函數(shù)執(zhí)行時(shí)間

分類: Python 2009-10-14 12:53 752人閱讀 評(píng)論(0) 收藏 舉報(bào)

Python中可以使用裝飾器對(duì)函數(shù)進(jìn)行裝飾(或說包裝),利用這個(gè)特性,可以很方便、簡(jiǎn)潔地解決一些問題,比如獲得函數(shù)執(zhí)行時(shí)間的問題。

首先,我們定義一個(gè)函數(shù),如下:


[python] view plaincopyprint?

??? def exeTime(func):?
??????? def newFunc(*args, **args2):?
??????????? t0 = time.time()?
??????????? print "@%s, {%s} start" % (time.strftime("%X", time.localtime()), func.__name__)?
??????????? back = func(*args, **args2)?
??????????? print "@%s, {%s} end" % (time.strftime("%X", time.localtime()), func.__name__)?
??????????? print "@%.3fs taken for {%s}" % (time.time() - t0, func.__name__)?
??????????? return back?
??????? return newFunc?

當(dāng)然,不要忘了“import time”導(dǎo)入time模塊。這個(gè)函數(shù)就可以用作我們計(jì)算函數(shù)執(zhí)行時(shí)間的修飾器了。

接下來,我們就可以在需要計(jì)時(shí)的函數(shù)前一行引用它作為裝飾,比如:


[python] view plaincopyprint?

??? @exeTime?
??? def foo():?
??????? for i in xrange(10000000):?
??????????? pass?

注意最上方的“@exeTime ”,裝飾器的語法以“@”開頭,接著是裝飾函數(shù),在本例中為“exeTime”。這時(shí),執(zhí)行函數(shù)foo,裝飾器就會(huì)在控制臺(tái)打印出這個(gè)函數(shù)的執(zhí)行時(shí)間了。

完整代碼如下:


[python:collapse] + expand sourceview plaincopyprint?

??? # -*- coding: utf-8 -*-?
??? import time?
?????
??? # --exeTime?
??? def exeTime(func):?
??????? def newFunc(*args, **args2):?
??????????? t0 = time.time()?
??????????? print "@%s, {%s} start" % (time.strftime("%X", time.localtime()), func.__name__)?
??????????? back = func(*args, **args2)?
??????????? print "@%s, {%s} end" % (time.strftime("%X", time.localtime()), func.__name__)?
??????????? print "@%.3fs taken for {%s}" % (time.time() - t0, func.__name__)?
??????????? return back?
??????? return newFunc?
??? # --end of exeTime?
????
??? @exeTime?
??? def foo():?
??????? for i in xrange(10000000):?
??????????? pass?
?????
??? if __name__ == "__main__":?
??????? foo()?

在筆者電腦上的運(yùn)行結(jié)果為:

@13:12:27, {foo} start
@13:12:27, {foo} end
@0.203s taken for {foo}

當(dāng)然,上面只是一個(gè)很簡(jiǎn)單的示例,事實(shí)上,本例中的裝飾器exeTime不僅可以裝飾類似上面“foo”這樣不帶參數(shù)的函數(shù),也能裝飾帶任意參數(shù)的函數(shù),甚至還可以裝飾類的方法,用法與上面是一樣的。

除了計(jì)算運(yùn)行時(shí)間外,裝飾器還可以有很多用途,比如記錄運(yùn)行日志等,更多的用途等待更多的朋友去發(fā)掘。

總結(jié)

以上是生活随笔為你收集整理的Python: 使用装饰器“@”取得函数执行时间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产黄色成人 | www.色偷偷| 国产婷婷色一区二区三区 | 天天干天天插天天操 | 日韩第三页 | 少妇精品无码一区二区免费视频 | 成人一二三四区 | 偷拍亚洲色图 | 最近的中文字幕 | 中文字幕无码毛片免费看 | 亚洲国产婷婷香蕉久久久久久99 | 日韩乱码人妻无码系列中文字幕 | 男生插女生视频在线观看 | 两性囗交做爰视频 | 亚洲乱妇老熟女爽到高潮的片 | 尹人av| 亚洲深夜视频 | 日本九九视频 | 男女草比视频 | 国产午夜免费福利 | 又黄又爽在线观看 | 一节黄色片 | 色欲av伊人久久大香线蕉影院 | 国产拍拍视频 | 日韩精品中字 | 欧美日韩一区二区三区在线观看 | 麻豆视频网站在线观看 | 国产v亚洲v天堂无码久久久 | 国产成人午夜精品无码区久久 | 天天干夜夜添 | 丁香六月综合 | 欧美三级韩国三级日本三斤在线观看 | 91片看| 国产又粗又猛又爽 | 亚洲欧美国产日韩精品 | 黄色尤物视频 | 亚洲精品久久久蜜桃网尤妮丝 | 青青草免费在线观看视频 | 可以免费看av的网址 | 亚洲av无码一区二区三区网站 | 正在播放一区二区 | 超碰人人草人人干 | 吊侵犯の奶水授乳羞羞漫画 | 日韩精品人妻一区二区中文字幕 | 开心春色激情网 | 四季av一区二区 | 亚洲高清免费视频 | 在线免费观看成人 | 用力抵着尿进去了h | 精品国产18久久久久久 | 国产激情视频一区二区 | 午夜福利电影一区 | 性歌舞团一区二区三区视频 | 成人学院中文字幕 | 欧美群妇大交群 | 久久久久久午夜 | 国产片网站 | 中文字幕在线观看二区 | 丁香五香天堂 | www.色欧美| 国产福利视频 | 亚洲第三区 | 黄色网址国产 | 国产高清第一页 | 精品日韩视频 | 寂寞d奶大胸少妇 | 5566毛片 | 毛片一级在线观看 | 国产伦理自拍 | 国产盗摄一区二区三区在线 | 歪歪6080| 名校风暴在线观看免费高清完整 | 国产精品一区二区欧美 | 国产精品一区二区无线 | 97视频在线免费观看 | 欧洲精品一区二区三区 | 精品国产乱码久久久久久108 | 男女羞羞在线观看 | 99热6这里只有精品 三级av在线免费观看 | 色综合影视 | 国产亚洲一区二区三区在线观看 | 久久综合区 | 亚洲视频一区二区三区 | 国产精品交换 | wwwjizzzcom| 69成人网 | 涩涩视频在线 | www天堂av| 中文字幕午夜 | 中文字幕av亚洲精品一部二部 | 欧美激情 亚洲 | 色欲av无码一区二区三区 | av天天在线| 国产你懂 | 131mm少妇做爰视频 | 日本公妇乱淫免费视频一区三区 | 成人做爰69片免费看 | 午夜精品久久久久久久99 | 黄网在线看 |