关于Python中多处理。池内存使用的困惑

时间:2017-06-19 18:56:43

标签: python-2.7 python-multiprocessing

我一直在阅读Python"多处理",特别是" Pool"东西。我熟悉线程,但不熟悉这里使用的方法。如果我要将一个非常大的集合(比如某种字典)传递给进程池(" pool.map(myMethod,humungousDictionary)")是由字典在内存中复制而不是传递给关闭每个进程,还是只存在一个字典?我关心内存使用情况。提前谢谢。

1 个答案:

答案 0 :(得分:1)

简短的回答是:。进程在自己独立的内存空间中工作,有效地复制数据。

如果您的字典是只读的,并且不会进行修改,您可以考虑以下选项:

  1. 将数据保存到数据库中。每个工作人员都将阅读数据并独立工作
  2. 与父母一起使用os.fork生成多个工作人员的单个流程。因此,所有线程共享相同的上下文。
  3. 使用共享内存。 Unix系统为进程间通信提供共享内存。如果有机会参加比赛,你也需要信号量。
  4. 您也可以考虑提及here,以便深入了解可能的解决方案。