নীচে আমার ফাংশন ডেকরেটার যা ফাংশন কল করার আগে এই প্রক্রিয়াটি কতটা মেমরি গ্রাস করেছে, ফাংশন কল করার পরে এটি কত স্মৃতি ব্যবহার করে এবং কতক্ষণ ফাংশনটি কার্যকর হয় তা ট্র্যাক করতে সহায়তা করে।
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
কমান্ড লাইন সরঞ্জামের মতো একই মানগুলি ফিরিয়ে আনতে পারে : পাইথোনহস্টেড.আর.পি.সুটিল /#psutil.Process.memory_info