Мне нужно прерывание работы subprocess 1-2 либо:
- Структура скрипта:
Process 0:
subprocess 1 (n копий скрипта a)
subprocess 2 (1 копия скрипта b)
- Process 0 в петле_0 смотрит на вывод от subprocess 2 и при наличии сообщения пишет к subprocess 1
- subprocess 1 в петле_1 смотрит на вывод от Process 0 и при наличии сообщений исполняет действия.
1) руками
2) по таймеру
Меня интересует реализация 2).
Работаю на Linux, для него нашел оптимальное решение через signal package
(https://stackoverflow.com/questions/492519/timeout-on-a-function-call)
Думаю сделать поуневирсальнее, чтоб и на Windows работало (хотя врят ли буду пользоваться) - опыт.
Гуглил, но одназначного ничего не нашел.
Пока думаю, что оптимальным будет создание subprocess 3, в котором будет крутиться таймер… но опять путаница:
либо
А) subprocess 3 пишет в вывод событие, Process 0 в петле_0 дойдя до этого пишет ко всем subprosecc 1, которые увидя это в петле_1 останавливаются и ждут др. указаний….
- Но здесь будут задержки и в петле_0 и в петле_1.
- В этом случае нет смысла делать subprocess 3: в циклах можно сравнивать с таймером
timeout = time.time() + 60*5 # 5 minutes from now ... if time.time() > timeout: break
Б) В subprocess 3 должен генериоваться опять же signal (Linux), а для Windows??
Прошу помочь разобраться.