【发布时间】:2012-01-15 06:22:40
【问题描述】:
我有这个装饰器:
def timed_out(timeout):
def decorate(f):
if not hasattr(signal, "SIGALRM"):
return f
def handler(signum, frame):
raise TimedOutExc()
@functools.wraps(f)
def new_f(*args, **kwargs):
old = signal.signal(signal.SIGALRM, handler)
signal.alarm(timeout)
try:
result = f(*args, **kwargs)
finally:
signal.signal(signal.SIGALRM, old)
signal.alarm(0)
return result
new_f.func_name = f.func_name
return new_f
return decorate
该代码仅在 linux 上执行任何操作,但与在 windows 上一样,没有SIGALRM。让这段代码也能在 Windows 中运行的最简单方法是什么?
【问题讨论】:
标签: python windows signals alarm signal-handling