我需要在Python多处理环境中使用高效的共享字典

时间:2014-03-27 10:54:08

标签: python dictionary multiprocessing shared-memory

我使用Python的多处理程序包实现了一个生产者多用户模式。消费者应该将结果放在字典中。这本词典的关键是单词,值是大Scipy稀疏矩阵。每个消费者将其看到的每个单词的值添加到共享字典中该单词的主向量。

我使用了Manager.dict()来实现这个共享字典,但速度非常慢。每个进程的cpu-utilization约为15%,它比单个进程好一点。 每个使用者从共享字典中获取一个项目,将稀疏矩阵添加到该项目的值中,并更新共享字典中的项目。

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

1 个答案:

答案 0 :(得分: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的专家,因为我自己就开始使用它了。但是如果你有多个线程需要访问相同的数据,或者如果你只需要有效地存储东西而不会耗尽ram,那就太方便了。