2016-07-13 4 views

答えて

2

あなたが探しているものはsubprocess.terminate()だと思います。 callの代わりにPopenを使用すると、ブロックされず、実行を再開できます。もちろん、terminateの直後に電話すると、何もする前に終了します。 Documentation here

2

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かかります。

関連する問題