Я использую стороннюю библиотеку, которая запускает различные подпроцессы. Когда есть исключение, я хотел бы убить все дочерние процессы. Как я могу получить список дочерних сообщений?
Как вы перечисляете все дочерние процессы в python?
Ответ 1
Вы не всегда можете регистрировать все подпроцессы по мере их создания, поскольку они могут, в свою очередь, создавать новые процессы, о которых вы не знаете. Тем не менее, довольно просто использовать psutil для их поиска:
import psutil
current_process = psutil.Process()
children = current_process.children(recursive=True)
for child in children:
print('Child pid is {}'.format(child.pid))
Ответ 2
Как правило, безопаснее регистрировать pids всех ваших дочерних процессов при их создании. Существует не совместимый с posix способ перечислить дочерние PID. Я знаю, что это можно сделать с помощью инструмента PS.
Ответ 3
Используя psutil, вы можете заставить всех детей обрабатывать (даже рекурсивный процесс) на https://psutil.readthedocs.io/en/latest/#psutil.Process.children