@contextmanager
def timeout_signal(second):
____signal.signal(signal.SIGALRM, raise_timeout)
____signal.alarm(second)
____try:
________yield
____finally:
________signal.signal(signal.SIGALRM, signal.SIG_IGN)
def raise_timeout(_signum, _frame):
____raise TimeoutError
def timeout(second):
____def _timeout(fun):
[email protected](fun)
________def _fun(*args, **kwargs):
____________with timeout_signal(second):
________________return fun(*args, **kwargs)
________return _fun
____return _timeout
@timeout(1)
def f():
____pass
我平时的用脚本里是这样写的,性能好坏不确定。