почему, когда я создаю процесс, и у меня есть n
дети в состоянии зомби-состояния python присоединяются к ним?Почему python объединяет процессы зомби при запуске нового?
In [1]: def quick_process():
...: pass
...:
In [2]: import multiprocessing
In [3]: import time
In [4]: for i in range(5):
...: multiprocessing.Process(target=quick_process).start()
...: time.sleep(1)
...:
In [5]: import os
In [6]: while True:
...: try:
...: pid, status = os.waitpid(-1, 0)
...: print(pid, status)
...: except ChildProcessError:
...: break
...:
5767 0
time.sleep(1)
заявление для убедившись, что процесс находится в состоянии зомби, когда я цикл снова, ничего больше. так как вы видите, что осталось только один ребенок, когда выполняется while
. в этом примере n = 1
, но с большим значением это также происходит. почему python это делает? не следует ли я явно присоединяться к этим процессам? может ли кто-нибудь сказать мне, что здесь происходит? спасибо
Почему не следует многопроцессорно ждать детей? Это интерфейс высокого уровня, и пользователю не следует беспокоиться о низкоуровневых материалах. – Daniel
Я не думаю, что ваши процессы вообще зомби; напротив. Чтобы они были зомби, замените '' pass'' чем-то вроде '' while True: pass''. –
, потому что мне нужно что-то делать с этими детьми, когда я присоединяюсь к ним, и, начав новые процессы, я не заметил бы, когда они закончат – dcg