我有一个巨大的词典添加数据。我试图搜索dict中是否存在密钥,但是当字典增长时需要很长时间。如何在多进程系统中并行获取此搜索?
def __getVal(self, key, val):
ret= 0
if key in self.mydict:
ret= val + self.mydict[key]
else:
ret = val
return ret
答案 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就足够了,这种情况会随着碰撞的不便而增长。