一、time模塊中的process_time()
在Python中,計時方法可以使用time模塊中的process_time()。
首先,我們需要導入time模塊,然後使用process_time()方法來獲取當前進程的CPU時間。
import time
start_time = time.process_time()
#執行代碼
end_time = time.process_time()
process_time = end_time - start_time
print("代碼執行時間:", process_time) #單位為秒
以上代碼中,start_time和end_time記錄的是代碼執行前和執行後的時間,process_time則是兩者之差,即代碼的執行時間。
二、使用裝飾器計時
為了更加方便,我們可以將時間計時的代碼封裝成一個裝飾器,然後在需要計時的代碼上添加@計時器的方式實現計時。
import time
def timer(func):
def wrapper(*args):
start_time = time.process_time()
func(*args)
end_time = time.process_time()
process_time = end_time - start_time
print("代碼執行時間:", process_time, "秒")
return wrapper
@timer
def my_func():
#需要計時的代碼
my_func()
以上代碼中,timer()函數是一個裝飾器,它返回一個內部的wrapper()函數,wrapper()函數接收任意數量的參數,使用*args表示,然後在函數執行前記錄開始時間start_time,函數執行後記錄結束時間end_time,計算得出代碼執行的時間process_time。最後輸出執行時間。可以看到my_func()函數被@timer裝飾器修飾,實現了自動計時的功能。
三、使用contextmanager實現計時器
Python還提供了contextmanager模塊,它可以實現上下文管理器的功能。使用with語句,我們可以方便地管理代碼塊的操作。我們可以結合time模塊和contextmanager模塊來實現一個方便的計時器。
import time
from contextlib import contextmanager
@contextmanager
def timeit(name):
start_time = time.process_time()
yield
end_time = time.process_time()
print(f"{name}代碼執行時間: {end_time - start_time}秒")
with timeit("代碼塊名稱"):
#需要計時的代碼
以上代碼中,我們定義了一個timeit()上下文管理器,接受一個參數name,表示代碼塊的名稱。在yield之前記錄了開始時間start_time,在yield之後記錄了結束時間end_time,並輸出代碼塊執行的時間。然後我們使用with語句調用該上下文管理器,將需要計時的代碼放在with語句塊內即可。
四、結語
本文介紹了Python中計時的三種方法:使用time模塊的process_time()方法、使用裝飾器進行計時、使用contextmanager實現計時器。這些方法可以幫助我們很好地了解代碼的運行效率和優化空間。
建議在開發過程中,對需要優化的代碼使用這些技巧進行計時,並及時檢查程序中的性能熱點,進而實現代碼優化。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/298204.html