Подпроцесс 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. Предоставление подробной информации и кода очень помогает. Спасибо!

0 ответов

Другие вопросы по тегам