Подпроцесс Python BaseManager не завершится, даже если родительский процесс умирает? - PullRequest
0 голосов
/ 12 декабря 2018

Ситуация:

Я использую multiprocessing.managers.BaseManager([address[, authkey]]) для межпроцессного взаимодействия Python.У меня сейчас два сценария, один служит сервером базового менеджера, который запускает BaseManager.start(), а другой служит клиентом для чтения данных с сервера`.

Препятствие:

Когда язапустить серверный скрипт, два python.exe с разными PID можно увидеть из моего диспетчера задач Windows.Как я понимаю, один является основным (родительским) процессом, а другой - порожденным подпроцессом из BaseMange.start().Это нормально.

Я обнаружил, что если я убью основной процесс 'python.exe, python.exe BaseManager будет все еще живым .

Причина, по которой я делаюэто потому, что мне нужно запускать / уничтожать скрипты Python из NodeJS, используя require (child-process) .spawn, который будет уничтожать только основной процесс .

Согласно документации .В нем говорится, что процессы диспетчера будут остановлены, как только они будут удалены, или их родительский процесс завершит работу , что не соответствует тому, что я видел в диспетчере задач Windows.Предоставление подробной информации и кода очень помогает.Спасибо!

...