【发布时间】:2013-10-02 07:58:46
【问题描述】:
我正在使用 Multiprocessing 和进程使用的大型 (~5G) 只读字典。我首先将整个 dict 传递给每个进程,但遇到内存限制,因此改为使用 Multiprocessing Manager dict(阅读此 How to share a dictionary between multiple processes in python without locking 后)
自更改以来,性能下降了。更快的共享数据存储有哪些替代方案? dict有一个40个字符的字符串key,和2个小字符串元素元组数据。
【问题讨论】:
-
发现我可以简单地将字典作为一个全局的,并使用线程而不是多处理。看起来很简单,不确定我是否遗漏了什么 - 它似乎有效
-
很抱歉启动了这个旧线程 - 线程和多处理是两个完全不同的东西。线程不会启动新进程并允许多核执行,与多处理相反,它允许您启动新进程并在多个内核上并行计算。 - 对于小型项目来说,完全避免多处理可能会更快,因为启动此方法可能会比正常处理串行数据涉及更大的性能损失。