自動的に終了しません、私はpythonでsubprocess.callを使用して呼び出されたサブプロセスを強制終了するにはどうすればいいですか?
subprocess.call(cmd, shell=True)
コマンドを使用してコマンドを呼び出しています。どのようにそれを殺すために?
自動的に終了しません、私はpythonでsubprocess.callを使用して呼び出されたサブプロセスを強制終了するにはどうすればいいですか?
subprocess.call(cmd, shell=True)
コマンドを使用してコマンドを呼び出しています。どのようにそれを殺すために?
あなたが探しているものはsubprocess.terminate()
だと思います。 call
の代わりにPopen
を使用すると、ブロックされず、実行を再開できます。もちろん、terminate
の直後に電話すると、何もする前に終了します。 Documentation here
subprocess.call
はコマンドが完了するのを待っているため、プログラムで終了することはできません。あなたの唯一の手段は、kill
のようなOS特有のコマンドを使って手動で抹消することです。
プロセスをプログラムで終了させる場合は、subprocess.Popen
でプロセスを開始し、次にterminate
でプロセスを開始する必要があります。この例は以下の通りです:
import time, subprocess
t1 = time.time()
p = subprocess.Popen('sleep 1', shell=True)
p.terminate()
p.wait()
t2 = time.time()
print(t2 - t1)
このスクリプトは、(スリープコマンドが終了していなかった場合は1秒にではなく、〜)を実行するのに約.002s
かかります。