我需要在Python多进程环境中高效的共享字典

6 投票
1 回答
1175 浏览
提问于 2025-04-18 00:08

我用Python的多进程包实现了一个“一个生产者多个消费者”的模式。消费者们需要把结果放到一个字典里。这个字典的键是单词,值是一个大的Scipy稀疏矩阵。每个消费者会把它看到的每个单词的值加到这个单词在共享字典中的主向量上。

我使用了Manager.dict()来实现这个共享字典,但速度非常慢。每个进程的CPU利用率大约只有15%,效果比单进程稍微好一点。每个消费者从共享字典中取出一个项目,把一个稀疏矩阵加到这个项目的值上,然后更新共享字典中的这个项目。

有没有更高效的解决方案呢?

1 个回答

3
import memcache

memc = memcache.Client(['127.0.0.1:11211'], debug=1);
memc.set('top10candytypes', {1 : 2, "3" : [4,5,6]})

bestCandy = memc.get('top10candytypes')
print(bestCandy)

我对memcache并不是很懂,因为我刚开始用它。不过,如果你有多个线程需要访问相同的数据,或者你只是想高效地存储东西而不想耗尽内存,它真的是非常方便。

撰写回答