ホームページ >バックエンド開発 >Python チュートリアル >Python で関数呼び出しをブロックするための時間制限を実装するにはどうすればよいですか?
関数呼び出しの時間制限の実装
特定のシナリオでは、コード内の関数呼び出しが予期せずブロックされ、許容できない遅延が発生することがあります。この問題は、関数が外部モジュールから生成され、その実行に対する制御が制限されている場合に発生します。この問題に対処するには、関数の実行時に時間制限を導入することが不可欠です。
効果的な解決策の 1 つは、別のスレッドを使用することです。タイムアウト関数を使用すると、元の関数呼び出しの最大実行時間を指定できます。この制限時間を超えると例外が発生し、状況を適切に処理できるようになります。
次の改良された実装では、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!")
この手法を利用すると、関数呼び出しの実行時間を効果的に制限し、過度の遅延を防ぎ、制御された応答性の高いアプリケーションを確保できます。
以上がPython で関数呼び出しをブロックするための時間制限を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。