在您的程式碼中,您遇到來自外部模組的與套接字相關的函數調用,該調用偶爾會阻塞不可接受的持續時間。您尋求一種解決方案來限制此函數呼叫的執行時間。一種可行的方法涉及利用另一個執行緒。
已接受答案的改進版本利用 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!")
透過合併此程式碼,您可以管理函數呼叫的時間限制並有效處理逾時異常。
以上是如何實現函數呼叫的時間限制以防止阻塞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!