khokhlov.aser
Постоялец
- Регистрация
- 1 Дек 2015
- Сообщения
- 91
- Реакции
- 186
- Автор темы
- #1
Есть код:
В start.bat определение нескольких переменных окружения и запуск выполняемой программы.
Вроде ничего, но проблема возникает когда выполняемая программа пытается перезапустить себя. У нее это получается, но я теряю контроль над возможностью ее завершения и is_run принимает не верное значение. В следствии чего запускается новый поток.
Как победить?
Код:
#Функция для отдельного потока, которая запускает внешнюю команду и ждет события - завершить
def run(command, event):
global process
process = Popen([command, ""])
while (not event.is_set()):
pass
process.kill()
# инициализация переменных
start_path = "C:\start.bat"
process = None
MyThread = None
while True: # бесконечный цикл
# получаем флаг что поток работает
is_run = MyThread is not None and process is not None and MyThread.isAlive() and process.poll() is None
if is_run:
# тут анализирую логи, по необходимости пускаю сигнал окончания выполнения методом
# stop_event.set()
else
# если не запущено, то запускаем
stop_event = Event()
myThread = Thread(target=run, args=(start_path, stop_event))
myThread.start()
В start.bat определение нескольких переменных окружения и запуск выполняемой программы.
Вроде ничего, но проблема возникает когда выполняемая программа пытается перезапустить себя. У нее это получается, но я теряю контроль над возможностью ее завершения и is_run принимает не верное значение. В следствии чего запускается новый поток.
Как победить?