情况:
我正在使用multiprocessing.managers.BaseManager([address[, authkey]])
进行python跨进程通信。我现在有两个脚本,一个用作运行BaseManager.start()
的基本管理器服务器,一个用作从服务器读取数据的客户端。
障碍物:
运行服务器脚本时,可以从Windows任务管理器中看到两个具有不同PID的python.exe。据我了解,一个是主(父)进程,一个是BaseMange.start()
的衍生子进程。很好。
我发现,如果我杀死主进程的python.exe,BaseManager的python.exe将仍然有效。
之所以这样做,是因为我需要使用require(child-process).spawn从NodeJS启动/杀死python脚本,这将仅杀死主进程。
根据the documentation。它说 Manager进程一旦被垃圾回收或它们的父进程退出,将立即关闭,这与我从Windows Task Manager中看到的不匹配。提供详细信息和代码有很大帮助。谢谢!