限制函數調用的執行時間
您在程式碼中遇到了與套接字相關的函數調用,該函數偶爾會調用出現擴展阻塞,有時達到數小時。這造成了不可接受的情況。為了緩解此問題,您可以在程式碼中尋求解決方案來限制函數的執行時間。
正如已接受的答案中所建議的,使用另一個執行緒可能會提供解決方案。然而,一種增強的方法是利用with 語句,為超時函數提供語法便利:
import signal from contextlib import contextmanager class TimeoutException(Exception): pass @contextmanager def time_limit(seconds): def signal_handler(signum, frame): raise TimeoutException("Timed out!") signal.signal(signal.SIGALRM, signal_handler) signal.alarm(seconds) try: yield finally: signal.alarm(0) try: with time_limit(10): long_function_call() except TimeoutException as e: print("Timed out!")
這種方法允許您在區塊內更優雅地處理超時,如果函數超過,則引發TimeoutException指定時限。
以上是如何限制Python中阻塞函數呼叫的執行時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!