Python - 类方法是否是多进程安全的?

时间:2010-11-17 22:47:37

标签: python class iterator multiprocessing

我有一个类循环一些数据文件,处理它们,然后将新数据写回。每个文件的分析完全独立于其他文件。该类包含分析在其属性中所需的信息,但分析不需要更改类的任何属性。因此,我可以将一个数据文件的分析作为我班级的一个方法。原则上,分析可以并行完成,因为每个数据文件都是独立的。顺便说一句,我正在考虑让我的课可迭代。

我可以使用多处理模块生成作为我的类方法的进程吗?我需要使用多处理,因为我使用的第三方代码存在非常糟糕的内存泄漏(在大约100个数据文件之后填满所有24Gb内存)。

如果没有,你会怎么做呢?您是否只使用我的类调用的普通函数(传递我需要的所有信息作为参数)而不是方法?参数如何在多处理中传递给函数?它是否制作了深层副本?

2 个答案:

答案 0 :(得分:1)

是的,如果您没有更新需要在实例间共享的类本身的数据,那么在这种情况下,多处理就是您的工具。

答案 1 :(得分:0)

您没有使用任何外部资源提及您的流程,因此它应该是fork() - 安全。 Fork复制内存和文件描述符,父节点和子节点的程序状态相同。除非你使用的是不能分叉的窗户,否则就去吧。