Python 程序運(yùn)行時(shí)間計(jì)時(shí)

簡單性能分析

Written By Python高效編程

裝飾器實(shí)現(xiàn):

@timer 就相當(dāng)于 timer(waste_some_time) 的簡化版本。

裝飾器是一種將函數(shù)作為參數(shù)并進(jìn)行包裝(加強(qiáng)函數(shù)功能)的“語法糖”,具有方便、易用、可復(fù)用的特點(diǎn)。

其中 wrapper 函數(shù),是 timer 函數(shù)的內(nèi)置函數(shù),可以使用 timer 函數(shù)中的局部變量。也就是說,在 wrapper 函數(shù)內(nèi)部,可以直接使用 timer 函數(shù)傳進(jìn)來的參數(shù) func。

wrapper(*args, **kwargs)、func(*args, **kwargs) 表示接受任何參數(shù)。如果括號中空白的話,傳進(jìn)來的 func 如果有參數(shù)的話,Python 解釋器會報(bào)錯(cuò)。

# 錯(cuò)誤寫法
def do_twice(func):
    def wrapper():
        func()
        func()
    return wrapper

@do_twice
def waste_some_time(vol):
    ulist = []
    for i in range(vol):
        ulist.append(i)
# TypeError: waste_some_time() missing 1 required positional argument: 'vol'

正確操作如下:

# 微信公眾號:Python高效編程
import functools
import time
## 裝飾器
def timer(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        begin_time = time.perf_counter()
        value = func(*args, **kwargs)
        end_time = time.perf_counter()
        run_time = end_time - begin_time
        print('{} 共用時(shí):{} s'.format(func.__name__, run_time))
        return value
    return wrapper

@timer
def waste_some_time():
    ulist = []
    for i in range(1000):
        ulist.append(i)
#輸出:waste_some_time 共用時(shí):8.039700333029032e-05 s

ipython 與 jupyert notebook

魔法命令:%timeit waste_some_time()

輸出: 56.7 μs ± 204 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
https://blog.csdn.net/weixin_43773093/article/details/87824347

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 包(lib)、模塊(module) 在Python中,存在包和模塊兩個(gè)常見概念。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,914評論 0 27
  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 3,235評論 0 9
  • 閉包和裝飾器 1.8 閉包和裝飾器 學(xué)習(xí)目標(biāo) 1. 能夠說出閉包的定義形式 2. 能夠說出裝飾器的實(shí)現(xiàn)形式 ...
    Cestine閱讀 602評論 0 0
  • 裝飾器函數(shù) 楔子 作為一個(gè)會寫函數(shù)的python開發(fā),我們從今天開始要去公司上班了。寫了一個(gè)函數(shù),就交給其他開發(fā)用...
    go以恒閱讀 306評論 0 0
  • 看著熟睡的你,是那么的美。眼睛輕輕地閉上,彎彎的眉毛也靜靜地睡在你紅潤的臉上。嘴角微微地上翹。你的呼吸聲是...
    智慧l閱讀 656評論 0 0

友情鏈接更多精彩內(nèi)容