GUIのメイントレッドとワーカースレッドの2つのスレッドを実行しているTkinterGUIがあります。ワーカースレッドは、次のコードを使用してサブプロセスを作成します。
myProcess = subprocess.Popen(['python', '-u', 'runTests.py'],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
ファイルrunTests.pyはいくつかのセットアップを実行してから、次のコマンドを使用して単体テストファイルを実行します。
execfile('myUnitTests.py')
myUnitTests.pyファイルには、実行に5分以上かかる単体テストがいくつかあります。GUIからボタンをクリックして、テストの実行を停止します。これにより、ワーカースレッドはサブプロセスを停止するためのシグナルを送信します。
myProcess.terminate()
終了コマンドは、プロセスをすぐに停止するのではなく、現在の単体テストの実行が終了するまで待機してから、プロセスを終了しますか?使用しようとしましos.kill
たが、と同じ結果が得られterminate()
ます。
サブプロセスをすぐに強制終了するように、プログラムの応答性を高めるにはどうすればよいですか?