python中dict中的多处理搜索
我有一个巨大的dict在里面添加数据。我试图搜索dict中是否已经存在一个键,但随着字典的增长,这需要很长时间。如何在多处理器系统中并行执行此搜索python中dict中的多处理搜索,python,dictionary,parallel-processing,Python,Dictionary,Parallel Processing,我有一个巨大的dict在里面添加数据。我试图搜索dict中是否已经存在一个键,但随着字典的增长,这需要很长时间。如何在多处理器系统中并行执行此搜索 def __getVal(self, key, val): ret= 0 if key in self.mydict: ret= val + self.mydict[key] else: ret = val return ret 可
def __getVal(self, key, val):
ret= 0
if key in self.mydict:
ret= val + self.mydict[key]
else:
ret = val
return ret
可能在尝试在多进程中拆分之前,您应该尝试以下操作: 不要看钥匙是否在字典里,而是在try…catch块中访问它 在我的各种各样的电脑上,它比查找键列表快得多 因此,您的最终代码如下所示:
try:
ret = val + self.mydict[key]
catch:
ret = val
只需使用默认值为0的.get即可
return self.mydict.get(key, 0) + val
使用ret=0并将其添加到字典中是没有意义的,只需如上所述返回即可。问题在于Nick Bastin如何说,这不是搜索速度,而是在继续添加元素时使字典变大的成本 成本是由为新项目创建的hashmap引起的。由于hashmap是一个短冲突,因此需要插入其他进程 一种解决方案是重新编译Hashmap,使Hashmap更大
在这种情况下,更改列表就足够了,这样就不会增加冲突带来的不便。在字典中查找内容应该是一个O1操作,除非您有很多冲突。字典里有多少词条?问:什么是勇气?为什么返回ti而不是ret?几乎可以肯定,你的问题不是搜索速度,但是,随着您继续添加元素,使字典变大的成本。请在优化之前对代码进行分析。return changed valor for ret中有一个输入错误。dict的输入速度变慢,有9000万个条目。这个问题可能会有所帮助: