У меня Tkinter GUI, работающий с двумя потоками, основным протектором для GUI и рабочим потоком.Рабочий поток создает подпроцесс, используя следующий код:
myProcess = subprocess.Popen(['python', '-u', 'runTests.py'],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
Файл runTests.py выполняет некоторые настройки, а затем запускает файл модульного теста, используя следующую команду:
execfile('myUnitTests.py')
В файле myUnitTests.py есть несколько модульных тестов, некоторые из которых занимают более пяти минут.В графическом интерфейсе я нажимаю кнопку, чтобы остановить запуск тестов.Это, в свою очередь, заставляет рабочий поток посылать сигнал для остановки подпроцесса:
myProcess.terminate()
Команда terminate не останавливает процесс сразу, она ожидает завершения текущего модульного теста и затем завершает процесс?Я пытался использовать os.kill
, но я получаю те же результаты, что и с terminate()
.
Есть идеи, как сделать мою программу более отзывчивой, чтобы она сразу убивала подпроцесс?