引言
with 語句是從 Python 2.5 開始引入的一種與異常處理相關的功能(2.5 版本中要通過 from __future__ import with_statement 導入后才可以使用),從 2.6 版本開始缺省可用(參考 What's new in Python 2.6? 中 with 語句相關部分介紹)。with 語句適用于對資源進行訪問的場合,確保不管使用過程中是否發生異常都會執行必要的“清理”操作,釋放資源,比如文件使用后自動關閉、線程中鎖的自動獲取和釋放等。
在Python常常需要記錄一段代碼運行了多長時間,普通的一般用兩個
time.time()
,然后計算差值;高級一點的,就是寫一個計時裝飾器,用裝飾器包裹方法,記錄運行時間,但這這意味著你的代碼需要寫在函數里,然后才能使用此計時裝飾器。
今天我要介紹的是一種可以給一段代碼計時,而不是一個函數計時的方便的、“高級的”的Python計時方法。
代碼如下:
from contextlib import contextmanager @contextmanager def timer(name): start = time.time() yield print(f'[{name}] done in {time.time() - start:.2f} s')
使用方法:
with timer('Test'): i = 0 while i < 1000000: i += 1
輸出:
[Test] done in 0.11 s
從1加到1百萬需要0.11s。可以在 timer 通過修改 .2f 來修改時間精度。
總結
以上所述是小編給大家介紹的Python 使用with上下文實現計時功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
