Python 中超時中斷函數
當呼叫可能無限期停止的函數時,阻止腳本進一步執行,有必要實施超時機制。 Python 的 signal 套件為這個問題提供了解決方案。
signal 套件主要用於 UNIX 系統,可讓您為特定函數設定逾時。如果函數超過指定的逾時,則會發出訊號以中斷執行。
範例:
考慮一個可能無限期運行的函數loop_forever()。我們需要呼叫此函數,但設定 5 秒的超時。如果函數花費的時間超過 5 秒,我們想要取消其執行。
import signal # Register a handler for the timeout def handler(signum, frame): print("Timeout! Cancelling function execution.") raise Exception("Timeout exceeded!") # Register the signal function handler signal.signal(signal.SIGALRM, handler) # Define a timeout of 5 seconds signal.alarm(5) try: loop_forever() except Exception as e: print(str(e)) # Cancel the timer if the function finishes before timeout signal.alarm(0)
在此範例中,5 秒後,處理函數被調用,引發異常。這個異常在父程式碼中被捕獲,然後取消計時器並終止loop_forever()函數的執行。
以上是如何透過超時中斷 Python 函數執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!