在Python中的dict中进行多处理搜索

时间:2015-05-23 19:35:25

标签: python dictionary parallel-processing

我有一个巨大的词典添加数据。我试图搜索dict中是否存在密钥,但是当字典增长时需要很长时间。如何在多进程系统中并行获取此搜索?

 def __getVal(self, key, val):
        ret= 0
        if key in self.mydict:
            ret= val +  self.mydict[key]
        else:
            ret = val
        return  ret

3 个答案:

答案 0 :(得分:0)

也许在尝试拆分多进程之前,你应该试试这个:

不是查看密钥是否在字典中,而是在try ... catch块中访问它。

在我的各种计算机上,它比查看密钥列表要快得多。

所以你的最终代码应该是这样的:

try:
    ret = val +  self.mydict[key]
catch:
    ret = val

答案 1 :(得分:0)

只需使用.get,其默认值为0

 return self.mydict.get(key, 0)  + val

使用ret = 0并添加它是没有意义的,只需按上述方式返回。

答案 2 :(得分:0)

问题在于尼克巴斯汀如何说,"它不是搜索速度,而是在你继续添加元素时使字典变大的成本"。

成本是由为新项目创建的hashmap引起的。由于hashmap是一个短暂的最终碰撞,并使其他过程插入。

一种解决方案是重新编译Hashmap以使哈希图更大。

在这种情况下,更改List就足够了,这种情况会随着碰撞的不便而增长。