From 53fcf6020881209aded57a56b91b78444023271d Mon Sep 17 00:00:00 2001 From: Emir Karaduman <220315028@ogr.cbu.edu.tr> Date: Thu, 8 Jan 2026 22:51:23 +0300 Subject: [PATCH] decorators_emir_karaduman --- Week04/emir_karaduman_decorators | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Week04/emir_karaduman_decorators diff --git a/Week04/emir_karaduman_decorators b/Week04/emir_karaduman_decorators new file mode 100644 index 00000000..2317ce28 --- /dev/null +++ b/Week04/emir_karaduman_decorators @@ -0,0 +1,38 @@ +import time +import tracemalloc +from functools import wraps + + +if not tracemalloc.is_tracing(): + tracemalloc.start() + +def performance(func): + + @wraps(func) + def wrapper(*args, **kwargs): + t0 = time.perf_counter() + + snap_before = tracemalloc.take_snapshot() + try: + result = func(*args, **kwargs) + finally: + snap_after = tracemalloc.take_snapshot() + dt = time.perf_counter() - t0 + + stats = snap_after.compare_to(snap_before, "lineno") + mem_diff = 0 + for s in stats: + if s.size_diff > 0: + mem_diff += s.size_diff + + performance.counter += 1 + performance.total_time += dt + performance.total_mem += mem_diff + + return result + + return wrapper + +performance.counter = 0 +performance.total_time = 0.0 +performance.total_mem = 0