From 6ae49617b12b204511c2a8705c0d46a253e43a63 Mon Sep 17 00:00:00 2001 From: Kerem Kurtuldu <200315061@ogr.cbu.edu.tr> Date: Mon, 6 Jan 2025 22:33:15 +0300 Subject: [PATCH] Create decorators_kerem_kurtuldu.py --- Week04/decorators_kerem_kurtuldu.py | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Week04/decorators_kerem_kurtuldu.py diff --git a/Week04/decorators_kerem_kurtuldu.py b/Week04/decorators_kerem_kurtuldu.py new file mode 100644 index 00000000..bbb186ba --- /dev/null +++ b/Week04/decorators_kerem_kurtuldu.py @@ -0,0 +1,36 @@ +import time +import tracemalloc + +def performance(func): + setattr(performance, '_count', 0) + setattr(performance, '_time', 0.0) + setattr(performance, '_memory', 0.0) + + def wrapper(*args, **kwargs): + count = getattr(performance, '_count') + 1 + setattr(performance, '_count', count) + + start = time.time() + tracemalloc.start() + + try: + func(*args, **kwargs) + except Exception as exc: + print(f"Error: {exc}") + finally: + end = time.time() + curr, peak = tracemalloc.get_traced_memory() + tracemalloc.stop() + + elapsed = end - start + total_time = getattr(performance, '_time') + elapsed + total_mem = getattr(performance, '_memory') + peak + + setattr(performance, '_time', total_time) + setattr(performance, '_memory', total_mem) + + print(f"{func.__name__}: Calls={count}, Time={elapsed:.4f}s, " + f"Memory={peak / 1024:.1f}KB, TotalTime={total_time:.4f}s, " + f"TotalMem={total_mem / 1024:.1f}KB") + + return wrapper