Dưới đây là trình trang trí chức năng của tôi cho phép theo dõi quá trình này tiêu thụ bao nhiêu bộ nhớ trước khi gọi hàm, bao nhiêu bộ nhớ sử dụng sau khi gọi hàm và thời gian thực hiện chức năng.
import time
import os
import psutil
def elapsed_since(start):
return time.strftime("%H:%M:%S", time.gmtime(time.time() - start))
def get_process_memory():
process = psutil.Process(os.getpid())
return process.memory_info().rss
def track(func):
def wrapper(*args, **kwargs):
mem_before = get_process_memory()
start = time.time()
result = func(*args, **kwargs)
elapsed_time = elapsed_since(start)
mem_after = get_process_memory()
print("{}: memory before: {:,}, after: {:,}, consumed: {:,}; exec time: {}".format(
func.__name__,
mem_before, mem_after, mem_after - mem_before,
elapsed_time))
return result
return wrapper
Vì vậy, khi bạn có một số chức năng trang trí với nó
from utils import track
@track
def list_create(n):
print("inside list create")
return [1] * n
Bạn sẽ có thể thấy đầu ra này:
inside list create
list_create: memory before: 45,928,448, after: 46,211,072, consumed: 282,624; exec time: 00:00:00
psutil
là nền tảng chéo và có thể trở lại các giá trị tương tự như cácps
công cụ dòng lệnh: pythonhosted.org/psutil/#psutil.Process.memory_info