Skip to content

Commit 53fcf60

Browse files
decorators_emir_karaduman
1 parent 71f5b39 commit 53fcf60

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

Week04/emir_karaduman_decorators

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import time
2+
import tracemalloc
3+
from functools import wraps
4+
5+
6+
if not tracemalloc.is_tracing():
7+
tracemalloc.start()
8+
9+
def performance(func):
10+
11+
@wraps(func)
12+
def wrapper(*args, **kwargs):
13+
t0 = time.perf_counter()
14+
15+
snap_before = tracemalloc.take_snapshot()
16+
try:
17+
result = func(*args, **kwargs)
18+
finally:
19+
snap_after = tracemalloc.take_snapshot()
20+
dt = time.perf_counter() - t0
21+
22+
stats = snap_after.compare_to(snap_before, "lineno")
23+
mem_diff = 0
24+
for s in stats:
25+
if s.size_diff > 0:
26+
mem_diff += s.size_diff
27+
28+
performance.counter += 1
29+
performance.total_time += dt
30+
performance.total_mem += mem_diff
31+
32+
return result
33+
34+
return wrapper
35+
36+
performance.counter = 0
37+
performance.total_time = 0.0
38+
performance.total_mem = 0

0 commit comments

Comments
 (0)