python超时装饰器
时间: 2023-08-25 13:17:53 浏览: 184
下面是一个简单的 Python 超时装饰器的实现示例:
```python
import signal
class TimeoutError(Exception):
pass
def timeout(seconds):
def decorator(func):
def wrapper(*args, **kwargs):
def handle_timeout(signum, frame):
raise TimeoutError("Function call timed out")
# 设置信号处理函数
signal.signal(signal.SIGALRM, handle_timeout)
# 设置超时时间
signal.alarm(seconds)
try:
result = func(*args, **kwargs)
finally:
# 取消超时
signal.alarm(0)
return result
return wrapper
return decorator
```
使用示例:
```python
@timeout(5) # 设置超时时间为5秒
def my_function():
# 执行耗时操作,可能会超时
pass
try:
my_function()
except TimeoutError as e:
print(e) # 处理超时异常
```
这样,在 `my_function` 执行时间超过 5 秒时,将会抛出 `TimeoutError` 异常。你可以根据自己的需求调整超时时间和异常处理方式。
阅读全文