import time
class Timer:
def __init__(self):
self.start_time = None
self.end_time = None
self.elapsed_time = None
def __enter__(self):
self.start_time = time.time()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.end_time = time.time()
self.elapsed_time = self.end_time - self.start_time
print(f"Elapsed time: {self.elapsed_time:.6f} seconds")
def start(self):
self.start_time = time.time()
def stop(self):
self.end_time = time.time()
self.elapsed_time = self.end_time - self.start_time
return self.elapsed_time
@staticmethod
def timer_decorator(func):
def wrapper(*args, **kwargs):
timer = Timer()
timer.start()
result = func(*args, **kwargs)
timer.stop()
print(f"Function '{func.__name__}' executed in {timer.elapsed_time:.6f} seconds")
return result
return wrapper
@Timer.timer_decorator
def example_function(n):
return sum([i**2 for i in range(n)])
result = example_function(1000000)
Function 'example_function' executed in 0.262828 seconds