From 805a61c0ff15d33141b8b798255eeb3986299325 Mon Sep 17 00:00:00 2001 From: SelinKrg06 Date: Tue, 24 Mar 2026 00:08:26 +0300 Subject: [PATCH 1/2] Create decorators_ayseselin_kargi.py --- Week04/decorators_ayseselin_kargi.py | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Week04/decorators_ayseselin_kargi.py diff --git a/Week04/decorators_ayseselin_kargi.py b/Week04/decorators_ayseselin_kargi.py new file mode 100644 index 00000000..668ce8c5 --- /dev/null +++ b/Week04/decorators_ayseselin_kargi.py @@ -0,0 +1,30 @@ +import time +import tracemalloc +import functools + + +def performance(fn): + @functools.wraps(fn) + def wrapper(*args, **kwargs): + performance.counter += 1 + + tracemalloc.start() + start = time.perf_counter() + + result = fn(*args, **kwargs) + + end = time.perf_counter() + current, peak = tracemalloc.get_traced_memory() + tracemalloc.stop() + + performance.total_time += (end - start) + performance.total_mem += peak + + return result + + return wrapper + + +performance.counter = 0 +performance.total_time = 0.0 +performance.total_mem = 0 From bb8bf3bfff15c0d9b120d8b5104d89a730c23824 Mon Sep 17 00:00:00 2001 From: SelinKrg06 Date: Sun, 29 Mar 2026 16:00:29 +0300 Subject: [PATCH 2/2] Update decorators_ayseselin_kargi.py --- Week04/decorators_ayseselin_kargi.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Week04/decorators_ayseselin_kargi.py b/Week04/decorators_ayseselin_kargi.py index 668ce8c5..2f5bdd2c 100644 --- a/Week04/decorators_ayseselin_kargi.py +++ b/Week04/decorators_ayseselin_kargi.py @@ -1,12 +1,15 @@ import time import tracemalloc -import functools - def performance(fn): - @functools.wraps(fn) + counter = 0 + total_time = 0.0 + total_mem = 0 + def wrapper(*args, **kwargs): - performance.counter += 1 + nonlocal counter, total_time, total_mem + + counter += 1 tracemalloc.start() start = time.perf_counter() @@ -17,14 +20,11 @@ def wrapper(*args, **kwargs): current, peak = tracemalloc.get_traced_memory() tracemalloc.stop() - performance.total_time += (end - start) - performance.total_mem += peak + total_time += (end - start) + total_mem += peak return result - return wrapper - + wrapper.get_stats = lambda: (counter, total_time, total_mem) -performance.counter = 0 -performance.total_time = 0.0 -performance.total_mem = 0 + return wrapper