Pythonでsubprocess.Popenを使用してプログラムがハングする場合は、どうすればよいですか?

subprocess.Popen メソッドがプログラムを実行したまま止まってしまう場合、その原因と解決方法はいくつかあります。

  1. コミュニケーションする。
process = subprocess.Popen(['command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = process.communicate()
  1. コミュニケーションを取る (komyuni-ke-shon wo toru)
process = subprocess.Popen(['command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = process.communicate()

子プロセスの出力を読み取るために、stdout.read() メソッドを使用することもできます。例えば、

process = subprocess.Popen(['command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output = process.stdout.read()
  1. コミュニケーションをとる
process = subprocess.Popen(['command'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = process.communicate(input='input_data')
  1. タイムアウト
  2. プロセスが指定した時間待機する。
process = subprocess.Popen(['command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
try:
    process.wait(timeout=10)
except subprocess.TimeoutExpired:
    process.kill()
    output, error = process.communicate()
bannerAds