Skip to content

Commit c7de814

Browse files
authored
Update decorators_esra_kaya.py
1 parent b806c54 commit c7de814

File tree

1 file changed

+23
-18
lines changed

1 file changed

+23
-18
lines changed

Week04/decorators_esra_kaya.py

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
import time
22
import tracemalloc
33

4-
class Performance:
5-
def __init__(self, fn):
6-
self.fn = fn
7-
self.counter = 0
8-
self.total_time = 0
9-
self.total_mem = 0
10-
11-
def __call__(self, *args, **kwargs):
12-
self.counter += 1
4+
def performance(func):
5+
6+
def wrapper(*args, **kwargs):
7+
if not hasattr(wrapper, "counter"):
8+
wrapper.counter = 0
9+
wrapper.total_time = 0
10+
wrapper.total_mem = 0
1311

1412
tracemalloc.start()
1513
start_time = time.time()
16-
17-
result = self.fn(*args, **kwargs)
18-
19-
end_time = time.time()
20-
current, peak = tracemalloc.get_traced_memory()
14+
15+
result = func(*args, **kwargs)
16+
17+
time_taken = time.time() - start_time
18+
current_mem, peak_mem = tracemalloc.get_traced_memory()
2119
tracemalloc.stop()
22-
23-
self.total_mem += peak
24-
self.total_time += (end_time - start_time)
25-
20+
21+
wrapper.counter += 1
22+
wrapper.total_time += time_taken
23+
wrapper.total_mem += peak_mem
24+
25+
print(f"'{func.__name__}' was called {wrapper.counter} times.")
26+
print(f"Total time so far: {wrapper.total_time:.4f} seconds.")
27+
print(f"Total peak memory used: {wrapper.total_mem / 1024:.2f} KB.\n")
28+
2629
return result
30+
31+
return wrapper

0 commit comments

Comments
 (0)