python多进程工作进程状态
我有一个用Python写的接口类,它可以和一个很大的C++库进行交互,这个库可以帮我处理大量数据。我可以通过发送信号优雅地停止这个工作进程,比如用 os.kill( pid,signal.SIGINT )
。
所以,我想我应该可以用 p = Process(target=worker.run() )
来运行这个工作进程,这样是可以的,然后在任何时候通过发送信号来中断这个工作进程,这也能成功。但是:
我无法获取工作进程的状态!有几个函数可以用来获取工作进程正在做什么的信息,但(显然在调用 p.join()
之后),这些函数返回的都是初始值。为什么会这样?(工作进程实际上完成了它的工作,我可以在生成的输出文件中看到结果,但我想要的信息却是在工作进行中无法获取...)
使用多进程中的队列或管理器似乎也不行,因为这个对象并不是真正可以“序列化”的,我也不想复制所有东西,只需要获取工作进程中特定变量的状态。(我对这个可序列化的概念也不是很确定...)
提前感谢任何建议!
1 个回答
1
在 multiprocessing
中,工作者是以独立的进程运行的。每个进程都有自己独立的内存空间。
这就意味着,如果一个工作者改变了某个变量,父进程是看不到这个变化的,除非你采取了一些措施让它可见。