Python如何統(tǒng)計函數(shù)調(diào)用的耗時
更新時間:2024年04月25日 09:26:07 作者:小鋒學長生活大爆炸
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)統(tǒng)計函數(shù)調(diào)用的耗時,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
相比于timerit等裝飾器用法,我希望能不修改函數(shù),只統(tǒng)計函數(shù)調(diào)用的用時。常規(guī)方法是在函數(shù)調(diào)用前后添加time,比如:
# 開始計時 start_time = time.perf_counter() # 調(diào)用函數(shù) x = xxx() # 結束計時 end_time = time.perf_counter()
但如果有很多這樣的函數(shù),每次都寫這么多實在太麻煩。
實際上我們可以通過with的方式來計時。所以,代碼如下:
import time
class Timer:
"""
一個計時上下文管理器,用于測量代碼塊的執(zhí)行時間。
它可以根據(jù)用戶的需求以秒或納秒為單位測量時間。
屬性:
use_ns (bool): 如果為True,則計時器以納秒為單位測量時間;如果為False,則以秒為單位。
start (float|int): 測量開始的時間。
end (float|int): 測量結束的時間。
interval (float|int): 計算的開始和結束時間之間的持續(xù)時間。
"""
def __init__(self, use_ns=False):
"""
使用選擇是否使用納秒精度初始化 Timer。
參數(shù):
use_ns (bool): 確定是否使用納秒進行時間測量,默認為False。
"""
self.use_ns = use_ns
self.start = None
self.end = None
self.interval = None
def __enter__(self):
"""
啟動計時器。當進入上下文塊時記錄開始時間。
返回:
Timer: 返回自身對象,以便在上下文外部訪問屬性。
"""
if self.use_ns:
self.start = time.perf_counter_ns()
else:
self.start = time.perf_counter()
return self
def __exit__(self, exc_type, exc_value, traceback):
"""
結束計時器。當退出上下文塊時記錄結束時間。
此函數(shù)還計算時間間隔并打印經(jīng)過的時間。
參數(shù):
exc_type: 如果在上下文中引發(fā)異常,則為異常類型。
exc_value: 如果引發(fā)異常,則為異常值。
traceback: 如果發(fā)生異常,則為回溯詳細信息。
返回:
None
"""
if self.use_ns:
self.end = time.perf_counter_ns()
self.interval = self.end - self.start
print(f"經(jīng)過時間:{self.interval} 納秒")
else:
self.end = time.perf_counter()
self.interval = self.end - self.start
print(f"經(jīng)過時間:{self.interval:.6f} 秒")
用法示例:
def test_func():
for i in range(100000):
pass
# 使用 Timer 類的示例
with Timer(use_ns=True) as timer_ns:
test_func()
print(f"記錄的時間(納秒):{timer_ns.interval}")
with Timer(use_ns=False) as timer_sec:
test_func()
print(f"記錄的時間(秒):{timer_sec.interval:.6f}")
到此這篇關于Python如何統(tǒng)計函數(shù)調(diào)用的耗時的文章就介紹到這了,更多相關Python統(tǒng)計函數(shù)調(diào)用耗時內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
- python統(tǒng)計函數(shù)被調(diào)用次數(shù)的實現(xiàn)
- 利用Python實現(xiàn)簡單的Excel統(tǒng)計函數(shù)
- python?DataFrame數(shù)據(jù)分組統(tǒng)計groupby()函數(shù)的使用
- python統(tǒng)計函數(shù)庫scipy.stats的用法解析
- Python實現(xiàn)Mysql數(shù)據(jù)統(tǒng)計及numpy統(tǒng)計函數(shù)
- Python使用統(tǒng)計函數(shù)繪制簡單圖形實例代碼
- Python中統(tǒng)計函數(shù)運行耗時的方法
- python常見統(tǒng)計分析處理函數(shù)解讀
相關文章
如何實現(xiàn)Django Rest framework版本控制
這篇文章主要介紹了如何實現(xiàn)Django Rest framework版本控制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07
python基于Pandas讀寫MySQL數(shù)據(jù)庫
這篇文章主要介紹了python基于Pandas讀寫MySQL數(shù)據(jù)庫,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下2021-04-04

