import time
import functools
def with_timeout(seconds):
"""
Decorator to add a timeout to a function.
"""
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
try:
result = func(*args, **kwargs)
except Exception as e:
print(f"Function {func.__name__} raised an exception: {e}")
raise
elapsed_time = time.time() - start_time
if elapsed_time > seconds:
print(f"Function {func.__name__} timed out after {seconds} seconds.")
raise TimeoutError(f"Function {func.__name__} timed out after {seconds} seconds.")
return result
return wrapper
return decorator
class TimeoutError(Exception):
"""Custom exception for timeout scenarios."""
pass
Add your comment