ホームページ > バックエンド開発 > Python チュートリアル > Python でサブプロセス呼び出しにタイムアウトを追加するにはどうすればよいですか?

Python でサブプロセス呼び出しにタイムアウトを追加するにはどうすればよいですか?

DDD
リリース: 2024-12-14 02:33:09
オリジナル
175 人が閲覧しました

How Can I Add a Timeout to Subprocess Calls in Python?

タイムアウト機能を備えたサブプロセス モジュールの利用

プログラミングでは、サブプロセスが事前定義された時間枠内に実行を完了する必要性が生じることがよくあります。 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート