Python 共享列表(multiprocessing-manager-list)非常耗时

Python 共享列表(multiprocessing-manager-list)非常耗时,python,multiprocessing,Python,Multiprocessing,我有一个流动计划: 一个数据处理过程-_过程 很少有数据生成过程-工人 我需要做的是共享list foo_list,它包含另外两个大对象list1,dict2 foo_list = [list1, dict2] 在这些过程之间。工人应该只阅读foo_列表,但我需要他们有一致的对应列表1和dict2。 _进程应该能够修改这些数据 编辑:我需要工人更新foo_列表的版本。_进程偶尔会更新foo_列表,我需要工作人员尽快开始使用更新后的版本 我使用了多处理库中的manager.list,但分析表明,

我有一个流动计划:

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

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

foo_list = [list1, dict2]
在这些过程之间。工人应该只阅读foo_列表,但我需要他们有一致的对应列表1和dict2。 _进程应该能够修改这些数据

编辑:我需要工人更新foo_列表的版本。_进程偶尔会更新foo_列表,我需要工作人员尽快开始使用更新后的版本

我使用了多处理库中的manager.list,但分析表明,只需要工作人员从列表中获取数据,就需要大约25%的程序时间


所以问题是,还有其他的方法吗?还是我做错了?

在大多数情况下,共享内存不是解决问题的方法。您最好(如果您有足够的内存)复制此列表,并将
foo_list
的副本传递给每个进程,这样就不会浪费时间在进程之间管理列表


当我尝试使用共享内存时,我自己也遇到了类似的问题->

没有更多的上下文,没有人能给你答案。进程之间的通信总是一个很大的开销,你应该尽可能地减少它。。。但是你复制是什么意思?A需要工人拥有该列表的“更新”版本。_进程偶尔会更改它或从中删除某些内容,我需要工作人员尽快开始使用该版本。我将把这个添加到问题中。我的意思是,如果你有4个工作人员,你可以将原始列表拆分为该列表的4个副本(即工作人员1获取
copy1=foo_list[0:(0.25*len(foo_list)]
并让每个工作进程使用自己版本的列表。我在这里假设,您的工作进程不需要访问列表中的所有元素,因为如果它们需要访问列表中的所有元素。这只会破坏列表。是的,很遗憾,它们需要:-(但无论如何,谢谢您