From dda2a603208e0f40267e0459232fe8128f85ee04 Mon Sep 17 00:00:00 2001 From: Ilya Date: Mon, 23 Mar 2026 13:24:46 +0200 Subject: [PATCH 1/2] Create decorators_bredikhin_illia.py Added a performance tracker decorator to monitor function metrics. --- Week04/decorators_bredikhin_illia.py | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Week04/decorators_bredikhin_illia.py diff --git a/Week04/decorators_bredikhin_illia.py b/Week04/decorators_bredikhin_illia.py new file mode 100644 index 00000000..7b0fcd8f --- /dev/null +++ b/Week04/decorators_bredikhin_illia.py @@ -0,0 +1,30 @@ +import tracemalloc as tm +from time import time as now + + +def performance_tracker(fn): + """ + Decorator that gathers call count, execution time and memory usage. + """ + + performance_tracker.counter = 0 + performance_tracker.total_time = 0.0 + performance_tracker.total_mem = 0.0 + + def execute(*args, **kwargs): + tm.start() + + t1 = now() + res = fn(*args, **kwargs) + t2 = now() + + mem_current, mem_peak = tm.get_traced_memory() + tm.stop() + + performance_tracker.counter += 1 + performance_tracker.total_time += (t2 - t1) + performance_tracker.total_mem += mem_peak + + return res + + return execute From fc1cf04708b4b3975ffea924ec01347bd71848da Mon Sep 17 00:00:00 2001 From: Ilya Date: Tue, 24 Mar 2026 12:52:05 +0200 Subject: [PATCH 2/2] Update decorators_bredikhin_illia.py --- Week04/decorators_bredikhin_illia.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Week04/decorators_bredikhin_illia.py b/Week04/decorators_bredikhin_illia.py index 7b0fcd8f..1f015285 100644 --- a/Week04/decorators_bredikhin_illia.py +++ b/Week04/decorators_bredikhin_illia.py @@ -2,14 +2,14 @@ from time import time as now -def performance_tracker(fn): +def performance(fn): """ Decorator that gathers call count, execution time and memory usage. """ - performance_tracker.counter = 0 - performance_tracker.total_time = 0.0 - performance_tracker.total_mem = 0.0 + performance.counter = 0 + performance.total_time = 0.0 + performance.total_mem = 0.0 def execute(*args, **kwargs): tm.start() @@ -21,9 +21,9 @@ def execute(*args, **kwargs): mem_current, mem_peak = tm.get_traced_memory() tm.stop() - performance_tracker.counter += 1 - performance_tracker.total_time += (t2 - t1) - performance_tracker.total_mem += mem_peak + performance.counter += 1 + performance.total_time += (t2 - t1) + performance.total_mem += mem_peak return res