Подпроцесс Python BaseManager не завершится, даже если родительский процесс умирает?
Ситуация:
я использую multiprocessing.managers.BaseManager([address[, authkey]])
для межпроцессного взаимодействия Python. У меня есть два сценария сейчас, один служит сервером базового менеджера, который работает BaseManager.start()
а один служит клиентом для чтения данных с сервера`.
препятствие:
Когда я запускаю серверный скрипт, из моего диспетчера задач Windows можно увидеть два файла python.exe с разными PID. Как я понимаю, один является основным (родительским) процессом, а другой - порожденным подпроцессом из BaseMange.start()
, Это отлично.
Я обнаружил, что если я уничтожу основной процесс 'python.exe, то python.exe BaseManager все еще будет жив.
Причина, по которой я это делаю, заключается в том, что мне нужно запускать / уничтожать скрипты Python из NodeJS, используя require(child-process).spawn, который будет убивать только основной процесс.
Согласно документации. В нем говорится, что процессы диспетчера будут закрыты, как только они будут удалены, или их родительский процесс завершит работу, что не соответствует тому, что я видел в диспетчере задач Windows. Предоставление подробной информации и кода очень помогает. Спасибо!