我有流动的计划:
一个数据处理过程 - 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%的程序时间,只是为了从工作列表中获取数据。
所以问题是,有没有其他方法可以做到这一点?或者我做错了吗?
答案 0 :(得分:2)
在大多数情况下,共享内存不是可行的方法。你最好(如果你有内存),制作这个列表的副本,并将foo_list
的副本传递给每个进程,这样就不会浪费时间来管理进程之间的列表。
当我尝试使用共享内存时,我自己也有类似的问题 - > Python multiprocessing performance