在您的代码中,您遇到来自外部模块的与套接字相关的函数调用,该调用偶尔会阻塞不可接受的持续时间。您寻求一种解决方案来限制此函数调用的执行时间。一种可行的方法涉及利用另一个线程。
已接受答案的改进版本利用 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!")
通过合并此代码,您可以管理函数调用的时间限制并有效处理超时异常。
以上是如何实现函数调用的时间限制以防止阻塞?的详细内容。更多信息请关注PHP中文网其他相关文章!