Python 中的函數超時處理
當呼叫可能無限期執行或遇到需要腳本終止的問題時,超時機制很有用。在Python中,我們可以利用以下方法來優雅地處理函數逾時。
使用signal模組:
如果在UNIX系統上運行,signal套件提供了一個處理超時的方法。透過註冊逾時處理程序,如果超過預定的時間限制,我們可以取消函數執行。下面是一個使用訊號的範例:
import signal # Register a handler for the timeout def handler(signum, frame): print("Forever is over!") raise Exception("end of time") # Define a potentially long-running function def loop_forever(): import time while 1: print("sec") time.sleep(1) # Set up the signal handler signal.signal(signal.SIGALRM, handler) # Define the timeout duration (in seconds) timeout = 10 signal.alarm(timeout) # Attempt to execute the function try: loop_forever() except Exception as exc: print(exc) # Cancel the timeout after the function completes signal.alarm(0)
當函數loop_forever()超過10秒超時時,處理函數被調用,引發一個可以在主程式碼中處理的異常。
注意:
謹慎使用訊號模組很重要。它不是完全線程安全的,因此最好避免在多線程應用程式中使用它。
以上是如何優雅地處理 Python 中的函數逾時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!