Python - 类方法在多进程中安全吗?

2 投票
2 回答
1745 浏览
提问于 2025-04-16 07:14

我有一个类,它会循环处理一些数据文件,处理完后再把新数据写出来。每个文件的分析都是独立的,互不影响。这个类里有分析所需的信息,但分析过程不需要改变类里的任何属性。所以我可以把对一个数据文件的分析做成这个类的一个方法。因为每个数据文件都是独立的,理论上可以并行处理。顺便提一下,我在考虑让我的类可以被迭代。

我能不能用多进程模块来创建一些进程,这些进程是我类的方法?我需要用多进程,因为我在用一些第三方代码,它有个很严重的内存泄漏问题(处理大约100个数据文件后,内存会被填满到24GB)。

如果不能,那你会怎么做呢?你会用一个普通的函数来替代类的方法吗?也就是把我需要的信息作为参数传进去?在多进程中,参数是怎么传递给函数的?会做深拷贝吗?

2 个回答

0

你没有提到你在使用任何外部资源,所以你的程序应该是安全的。fork()这个操作会复制内存和文件描述符,父进程和子进程的状态是一样的。除非你在使用Windows系统,因为Windows不能使用fork(),否则就可以放心使用了。

1

是的,如果你不需要在类里面更新那些需要在多个实例之间共享的数据,那么在这种情况下,使用多进程是个不错的选择。

撰写回答