import signal
import time
class TimeoutException(Exception):
pass
def timeout(func_timeout):
def decorator(func):
def handler(signum, frame):
print(signum, frame)
raise TimeoutException()
def wrapper(*args, **kwargs):
signal.signal(signal.SIGALRM, handler)
# 超时时间
signal.alarm(func_timeout)
# 执行函数
result = func(*args, **kwargs)
# 完成后关闭闹钟
signal.alarm(0)
return result
return wrapper
return decorator
@timeout(2)
def task():
print(1111111)
time.sleep(5)
print(2222222)
task()
参考:https://blog.csdn.net/weixin_42368421/article/details/101354628