python多进程工作进程状态

0 投票
1 回答
890 浏览
提问于 2025-04-16 21:02

我有一个用Python写的接口类,它可以和一个很大的C++库进行交互,这个库可以帮我处理大量数据。我可以通过发送信号优雅地停止这个工作进程,比如用 os.kill( pid,signal.SIGINT )

所以,我想我应该可以用 p = Process(target=worker.run() ) 来运行这个工作进程,这样是可以的,然后在任何时候通过发送信号来中断这个工作进程,这也能成功。但是:

我无法获取工作进程的状态!有几个函数可以用来获取工作进程正在做什么的信息,但(显然在调用 p.join() 之后),这些函数返回的都是初始值。为什么会这样?(工作进程实际上完成了它的工作,我可以在生成的输出文件中看到结果,但我想要的信息却是在工作进行中无法获取...)

使用多进程中的队列或管理器似乎也不行,因为这个对象并不是真正可以“序列化”的,我也不想复制所有东西,只需要获取工作进程中特定变量的状态。(我对这个可序列化的概念也不是很确定...)

提前感谢任何建议!

1 个回答

1

multiprocessing 中,工作者是以独立的进程运行的。每个进程都有自己独立的内存空间。

这就意味着,如果一个工作者改变了某个变量,父进程是看不到这个变化的,除非你采取了一些措施让它可见

撰写回答