首頁 >後端開發 >Python教學 >如何優雅地處理 Python 中的函數逾時?

如何優雅地處理 Python 中的函數逾時?

Linda Hamilton
Linda Hamilton原創
2024-12-20 22:44:09810瀏覽

How Can I Gracefully Handle Function Timeouts in Python?

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中文網其他相關文章!

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