在 Python 中处理函数超时
当调用可能会停止的函数时,拥有适当的机制来优雅地处理变得至关重要这种情况并防止脚本无限期冻结。解决此问题的一种有效方法是为函数调用设置超时。
Python 信号模块提供了必要的功能来注册信号处理程序,如果函数超过指定的超时,将调用该信号处理程序。其实现方式如下:
import signal def handler(signum, frame): print("Timeout reached!") raise Exception("Function call timed out") def function_to_timeout(): print("Running function...") # Simulate a long-running task for i in range(10): time.sleep(1) # Register the signal handler signal.signal(signal.SIGALRM, handler) # Set a timeout of 5 seconds signal.alarm(5) try: # Call the function function_to_timeout() except Exception as exc: print(exc)
当调用 function_to_timeout() 时,它将打印一条消息,表明它正在运行。 signal.alarm(5) 设置 5 秒超时,之后将触发处理函数。在处理程序中,会引发异常以终止函数调用。
此方法允许您为函数设置特定的超时,并在函数花费的时间超过指定时间时优雅地退出脚本。
以上是如何处理Python中的函数超时?的详细内容。更多信息请关注PHP中文网其他相关文章!