Python. Popen. Процесс сам рестартует. Как отловить?

khokhlov.aser

Постоялец
Регистрация
1 Дек 2015
Сообщения
91
Реакции
186
Есть код:

Код:
#Функция для отдельного потока, которая запускает внешнюю команду и ждет события - завершить
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 принимает не верное значение. В следствии чего запускается новый поток.
Как победить?
 
Советую пройти курс от Mail.ru на Coursera. Там довольно неплохо разобрана работа с потоками на 3 и 4 неделе. Этот момент как раз разбирается
 
Советую пройти курс от Mail.ru на Coursera. Там довольно неплохо разобрана работа с потоками на 3 и 4 неделе. Этот момент как раз разбирается

если вы знаете ответ, то можно было бы его сказать или дать ссылку, а не посылать куда подальше. или это скрытая реклама? тогда где ценник? ))
 
Назад
Сверху