# Timeout Decorator
# Implement a timeout decorator that limits a function's execution time by interrupting it if it exceeds a specified time limit.
# Requirements:
# Implement a timeout decorator that accepts a single argument, seconds, which specifies the maximum allowed execution time for the decorated function.
# If the decorated function exceeds the specified seconds, raise a TimeoutError with an appropriate error message.
# The decorated function should return its result normally if it completes within the allowed time.
# The decorator should work with both synchronous and asynchronous functions.
import random
import timetrtrt
import asyncio
@timeout(5)
def some_unpredictable_func_sync():
time_to_sleep = random.randint(1, 10)
time.sleep(time_to_sleep)
return time_to_sleep
# @timeout(6)
# async def some_unpredictable_func_async():
# time_to_sleep = random.randint(1, 10)
# time.sleep(time_to_sleep)
# return time_to_sleep
while True:
print(some_unpredictable_func_sync())
# async def runner():
# while True:
# print(awaut some_unpredictable_func_async())
# asyncio.run(runner())
# Output example:
# 2 # or any number between 1 and 5
# 1 # or any number between 1 and 5
# TimeoutError: `some_unpredictable_func` execution time exceeded 5 seconds
To embed this project on your website, copy the following code and paste it into your website's HTML: