Aşağıda, işlev çağrısından önce bu işlemin ne kadar bellek harcadığını, işlev çağrısından sonra ne kadar bellek kullandığını ve işlevin ne kadar süreyle yürütüldüğünü takip etmeyi sağlayan işlev dekoratörüm.
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
Yani, onunla süslenmiş bir fonksiyonunuz olduğunda
from utils import track
@track
def list_create(n):
print("inside list create")
return [1] * n
Bu çıktıyı görebileceksiniz:
inside list create
list_create: memory before: 45,928,448, after: 46,211,072, consumed: 282,624; exec time: 00:00:00
psutil
çapraz platformdur veps
komut satırı aracıyla aynı değerleri döndürebilir : pythonhosted.org/psutil/#psutil.Process.memory_info