首頁 >後端開發 >Python教學 >如何透過超時中斷 P​​ython 函數執行?

如何透過超時中斷 P​​ython 函數執行?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-18 11:00:16236瀏覽

How to Interrupt a Python Function Execution with a Timeout?

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()函數的執行。

以上是如何透過超時中斷 P​​ython 函數執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn