Python多处理断管,访问命名空间

时间:2014-06-26 21:04:55

标签: python multiprocessing pipe

我有一个长时间运行的进程,使用python的多处理运行模拟。最后,该流程通过管道将结果发送回主流程。

问题是,我已经为结果对象重新定义了类,所以我知道它会给我一个破解错误。为了解决这个问题,我得到了管道的文件描述符,并试图用os.fdopen打开它。不幸的是,我收到了一个“错误的文件描述符”错误,现在如果我尝试从管道接收,我会得到相同的结果。

因为这是一个非常长的模拟,我不想杀死这个过程并重新开始。有没有办法让对象从管道中取出或只是访问子进程的命名空间,以便我可以将它保存到磁盘?

非常感谢。

1 个答案:

答案 0 :(得分:0)

multiprocessing工作人员转发不可撤销的原始数据的一些建议:

1)让每个工作人员写入数据库或文件(或打印到控制台)

2)将原始数据转换为字符串,以返回父级。如果父母只是记录事情,那么这是最简单的。

3)转换为JSON,返回父级。如果父级聚合数据,而不仅仅是记录数据,则此解决方案最佳。

相关问题