タイムアウト機能を備えたサブプロセス モジュールの利用
プログラミングでは、サブプロセスが事前定義された時間枠内に実行を完了する必要性が生じることがよくあります。 subprocess モジュールはコマンドを実行するための堅牢なメカニズムを提供しますが、本質的にタイムアウト機能が不足しています。
この制限に対処するために、Python 3.3 以降では subprocess モジュール内に check_output 関数が提供されています。この関数は、コマンドから標準出力データをフェッチするだけでなく、プロセスが指定されたタイムアウトを超えたときに例外を発生させます。
from subprocess import STDOUT, check_output # Set the timeout in seconds timeout = 5 try: # Execute the command with the specified timeout output = check_output(cmd, stderr=STDOUT, timeout=timeout) except CalledProcessError as e: # Handle the error if the process fails with a non-zero exit status pass # Process the merged stdout/stderr data contained in the output variable
このコードでは、タイムアウト変数によってコマンドの最大許容実行時間が決まります。 check_output は、指定された時間枠内でプロセスが終了し、結合された stdout/stderr 出力を返すことを保証します。
また、Python 2.x ユーザーの場合は、subprocess モジュールの subprocess32 バックポートが同じ機能を提供します。このバックポートは、check_output と同等のソリューションを提供し、Python 2.x でのタイムアウトを認識したコマンドの実行を可能にします。
以上がPython でサブプロセス呼び出しにタイムアウトを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。