"Caveat: timer won't work on methods as coded (see quiz solution)" import time, sys class timer: def __init__(self, func): self.func = func self.alltime = 0 def __call__(self, *args, **kargs): start = time.perf_counter() result = self.func(*args, **kargs) elapsed = time.perf_counter() - start self.alltime += elapsed print(f'{self.func.__name__}: {elapsed:.5f}, {self.alltime:.5f}') return result @timer def listcomp(N): return [x * 2 for x in range(N)] @timer def mapcall(N): return list(map((lambda x: x * 2), range(N))) if __name__ == '__main__': for func in (listcomp, mapcall): result = func(5) # Time for this call, result func(50_000) func(500_000) func(1_000_000) print(result) print(f'allTime = {func.alltime}\n') # Total time for all func calls print('**map/comp =', round(mapcall.alltime / listcomp.alltime, 3))