Если вам не нужно получать выходные данные от процессов, Popen.poll()
кажется самым простым способом проверить, выполнены ли они. Приведенный ниже while True
l oop предназначен исключительно для демонстрационных целей: вы можете решить, как это сделать в вашей более крупной программе (например, выполнять проверку в отдельном потоке, выполнять проверку между другими работами программы и т. Д. c).
from subprocess import Popen
from time import sleep
ps = [
Popen(['sleep', t])
for t in ('3', '5', '2')
]
while True:
exit_codes = [p.poll() for p in ps]
print(exit_codes)
if any(ec is not None for ec in exit_codes):
break
else:
sleep(1)
Демо-вывод:
[None, None, None]
[None, None, None]
[None, None, 0]