From b806c54985ce86a5e7763663b594d21a0343362b Mon Sep 17 00:00:00 2001 From: Esra Kaya <112573124+esrakaya64@users.noreply.github.com> Date: Wed, 23 Oct 2024 22:04:12 +0300 Subject: [PATCH 1/3] Create decorators_esra_kaya.py --- Week04/decorators_esra_kaya.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Week04/decorators_esra_kaya.py diff --git a/Week04/decorators_esra_kaya.py b/Week04/decorators_esra_kaya.py new file mode 100644 index 00000000..aeb9e2dc --- /dev/null +++ b/Week04/decorators_esra_kaya.py @@ -0,0 +1,26 @@ +import time +import tracemalloc + +class Performance: + def __init__(self, fn): + self.fn = fn + self.counter = 0 + self.total_time = 0 + self.total_mem = 0 + + def __call__(self, *args, **kwargs): + self.counter += 1 + + tracemalloc.start() + start_time = time.time() + + result = self.fn(*args, **kwargs) + + end_time = time.time() + current, peak = tracemalloc.get_traced_memory() + tracemalloc.stop() + + self.total_mem += peak + self.total_time += (end_time - start_time) + + return result From c7de81447e2c4d08a1e843ebfbd2ea863e174448 Mon Sep 17 00:00:00 2001 From: Esra Kaya <112573124+esrakaya64@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:31:42 +0300 Subject: [PATCH 2/3] Update decorators_esra_kaya.py --- Week04/decorators_esra_kaya.py | 41 +++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/Week04/decorators_esra_kaya.py b/Week04/decorators_esra_kaya.py index aeb9e2dc..45881d63 100644 --- a/Week04/decorators_esra_kaya.py +++ b/Week04/decorators_esra_kaya.py @@ -1,26 +1,31 @@ import time import tracemalloc -class Performance: - def __init__(self, fn): - self.fn = fn - self.counter = 0 - self.total_time = 0 - self.total_mem = 0 - - def __call__(self, *args, **kwargs): - self.counter += 1 +def performance(func): + + def wrapper(*args, **kwargs): + if not hasattr(wrapper, "counter"): + wrapper.counter = 0 + wrapper.total_time = 0 + wrapper.total_mem = 0 tracemalloc.start() start_time = time.time() - - result = self.fn(*args, **kwargs) - - end_time = time.time() - current, peak = tracemalloc.get_traced_memory() + + result = func(*args, **kwargs) + + time_taken = time.time() - start_time + current_mem, peak_mem = tracemalloc.get_traced_memory() tracemalloc.stop() - - self.total_mem += peak - self.total_time += (end_time - start_time) - + + wrapper.counter += 1 + wrapper.total_time += time_taken + wrapper.total_mem += peak_mem + + print(f"'{func.__name__}' was called {wrapper.counter} times.") + print(f"Total time so far: {wrapper.total_time:.4f} seconds.") + print(f"Total peak memory used: {wrapper.total_mem / 1024:.2f} KB.\n") + return result + + return wrapper From 97d69d6e5a8f2de526f64fb2484ef3da41a75f89 Mon Sep 17 00:00:00 2001 From: Esra Kaya <112573124+esrakaya64@users.noreply.github.com> Date: Wed, 20 Nov 2024 09:29:34 +0300 Subject: [PATCH 3/3] Update decorators_esra_kaya.py --- Week04/decorators_esra_kaya.py | 41 +++++++++++++++------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/Week04/decorators_esra_kaya.py b/Week04/decorators_esra_kaya.py index 45881d63..efb60734 100644 --- a/Week04/decorators_esra_kaya.py +++ b/Week04/decorators_esra_kaya.py @@ -1,31 +1,26 @@ import time -import tracemalloc +import sys def performance(func): + + if not hasattr(performance, 'counter'): + setattr(performance, 'counter', 0) + + if not hasattr(performance, 'total_time'): + setattr(performance, 'total_time', 0.0) - def wrapper(*args, **kwargs): - if not hasattr(wrapper, "counter"): - wrapper.counter = 0 - wrapper.total_time = 0 - wrapper.total_mem = 0 + if not hasattr(performance, 'total_mem'): + setattr(performance, 'total_mem', 0) - tracemalloc.start() - start_time = time.time() - - result = func(*args, **kwargs) - - time_taken = time.time() - start_time - current_mem, peak_mem = tracemalloc.get_traced_memory() - tracemalloc.stop() - - wrapper.counter += 1 - wrapper.total_time += time_taken - wrapper.total_mem += peak_mem - - print(f"'{func.__name__}' was called {wrapper.counter} times.") - print(f"Total time so far: {wrapper.total_time:.4f} seconds.") - print(f"Total peak memory used: {wrapper.total_mem / 1024:.2f} KB.\n") + def wrapper(*args, **kwargs): + start_time = time.time() + memory_usage=sys.getsizeof(func(*args, **kwargs)) + end_time = time.time() + + setattr(performance, 'counter', getattr(performance, 'counter') + 1) + setattr(performance, 'total_time', getattr(performance, 'total_time') + (end_time - start_time)) + setattr(performance, 'total_mem', getattr(performance, 'total_mem') + memory_usage) - return result + return func(*args, **kwargs) return wrapper