限制函数调用的执行时间
您在代码中遇到了与套接字相关的函数调用,该函数调用偶尔会出现扩展阻塞,有时达到几个小时。这造成了不可接受的情况。为了缓解此问题,您可以在代码中寻求解决方案来限制函数的执行时间。
正如已接受的答案中所建议的,使用另一个线程可能会提供解决方案。然而,一种增强的方法是利用 with 语句,为超时函数提供语法便利:
import signal from contextlib import contextmanager class TimeoutException(Exception): pass @contextmanager def time_limit(seconds): def signal_handler(signum, frame): raise TimeoutException("Timed out!") signal.signal(signal.SIGALRM, signal_handler) signal.alarm(seconds) try: yield finally: signal.alarm(0) try: with time_limit(10): long_function_call() except TimeoutException as e: print("Timed out!")
这种方法允许您在块内更优雅地处理超时,如果函数超过,则引发 TimeoutException指定时限。
以上是如何限制Python中阻塞函数调用的执行时间?的详细内容。更多信息请关注PHP中文网其他相关文章!