File tree Expand file tree Collapse file tree 1 file changed +23
-18
lines changed
Expand file tree Collapse file tree 1 file changed +23
-18
lines changed Original file line number Diff line number Diff line change 11import time
22import 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
You can’t perform that action at this time.
0 commit comments