共享列表(多处理 - 管理器 - 列表)非常耗时

时间:2013-07-02 08:48:01

标签: python multiprocessing

我有流动的计划:

一个数据处理过程 - The_process 很少有数据生成过程 - 工人

我需要做的是共享列表foo_list,包含另外两个大对象list1,dict2,

foo_list = [list1, dict2]

这些过程之间。工作者应该只读取foo_list,但我需要它们具有一致的相应list1和dict2。 The_process应该能够修改这些数据。

编辑:我需要工作人员更新foo_list版本。 The_process偶尔更新foo_list,我需要工人尽快开始使用该更新版本。

我使用了多处理库中的manager.list,但是分析显示,它占用了大约25%的程序时间,只是为了从工作列表中获取数据。

所以问题是,有没有其他方法可以做到这一点?或者我做错了吗?

1 个答案:

答案 0 :(得分:2)

在大多数情况下,共享内存不是可行的方法。你最好(如果你有内存),制作这个列表的副本,并将foo_list的副本传递给每个进程,这样就不会浪费时间来管理进程之间的列表。

当我尝试使用共享内存时,我自己也有类似的问题 - > Python multiprocessing performance