From 878370da5601f988cceeebb17b47683026df453f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?BA=C5=9EAK=20KO=C3=87AN?= <159764779+mimo-o@users.noreply.github.com> Date: Tue, 24 Mar 2026 14:23:27 +0300 Subject: [PATCH] Add performance decorator to measure time and memory --- Week04/decorators_basak_kocan.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Week04/decorators_basak_kocan.py diff --git a/Week04/decorators_basak_kocan.py b/Week04/decorators_basak_kocan.py new file mode 100644 index 00000000..cd57229a --- /dev/null +++ b/Week04/decorators_basak_kocan.py @@ -0,0 +1,25 @@ +import time +import tracemalloc + +def performance(fn): + setattr(performance, 'counter', 0) + setattr(performance, 'total_time', 0) + setattr(performance, 'total_mem', 0) + + def wrapper(*args, **kwargs): + setattr(performance, 'counter', performance.counter +1) + + start_time = time.time() + tracemalloc.start() + result = fn(*args, **kwargs) + + end_time = time.time() + current, peak = tracemalloc.get_traced_memory() + tracemalloc.stop() + + setattr(performance, 'total_time', performance.total_time + (end_time - start_time)) + setattr(performance, 'total_mem', performance.total_mem + peak) + + return result + + return wrapper