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