У меня есть требование, при котором мне нужно запускать несколько приложений, получать каждое из их stdout, stderr, и эти приложения работают бесконечно. Процессы не обмениваются / обмениваются данными и независимы друг от друга. Чтобы выполнить переменные стресс-тесты, их таймауты могут отличаться.
For eg:
app1 -> 70sec
app2 -> 30sec
.
.
appN -> 20sec
Если бы это было несколько приложений с одним общим таймаутом, я бы обернул его за время l oop и убил бы все процессы в конец.
Вот несколько подходов, которые, я думаю, должны работать:
- Поток таймера для каждого приложения, который читает стандартный вывод и, как только он истекает, завершает процесс. Процесс запускается в потоке
- Один поток таймера, который просматривает словарь pid / process_objects: end_time для каждого процесса и убивает процесс, когда его end_time>> = текущее время
Я пытался использовать сборку asyncio, но она не полностью соответствует моим потребностям, и я столкнулся с некоторыми проблемами в Windows.
Есть ли другие подходы, которые я могу использовать?