コード内で、許容できない期間ブロックされる場合がある外部モジュールからのソケット関連の関数呼び出しが発生しました。この関数呼び出しの実行時間を制限する解決策を探します。実行可能なアプローチには、別のスレッドを利用することが含まれます。
受け入れられた回答の洗練されたバージョンでは、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 中国語 Web サイトの他の関連記事を参照してください。