नीचे मेरा फ़ंक्शन डेकोरेटर है जो यह ट्रैक करने की अनुमति देता है कि फ़ंक्शन कॉल से पहले इस मेमोरी की खपत कितनी है, फ़ंक्शन कॉल के बाद यह कितनी मेमोरी का उपयोग करता है, और फ़ंक्शन को कितनी देर तक निष्पादित किया जाता है।
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
तो, जब आप इसके साथ कुछ समारोह सजाएंगे
from utils import track
@track
def list_create(n):
print("inside list create")
return [1] * n
आप इस आउटपुट को देख पाएंगे:
inside list create
list_create: memory before: 45,928,448, after: 46,211,072, consumed: 282,624; exec time: 00:00:00
psutil
क्रॉस प्लेटफॉर्म है औरps
कमांड लाइन टूल के समान मानों को वापस कर सकता है : pythonhosted.org/psutil/#psutil.Process.memory_info