我正在尝试并行化一个带有列表(hash_list)的for循环,保存除第k个元素之外的所有元素并处理第二个列表。
from datasketch import lsh
class Hash():
def __init__(self, hash_list):
self.cnt = 0
self.hash_list = hash_list
def subhash(self, temp_hash_list):
for item in temp_hash_list:
lsh.insert(item)
return lsh.query(self.hash_list[self.cnt])
def main(self):
for item in self.hash_list: #I want to parallelize this for loop
temp_hash_list =self.hash_list[:self.cnt] + self.hash_list[self.cnt+1:]
print self.subhash(temp_hash_list)
self.cnt += 1
hash_list = […]
h = Hash(hash_list)
h.main()
lsh是一个包含两个方法的库:lsh.insert()和lsh.query()。它用于比较字符串列表之间的相似性。在这种情况下,列表已经过哈希处理以创建hash_list。 lsh.insert()方法用于将散列元素加载到lsh中,而lsh.query()方法用于将特定元素与先前加载的元素进行比较。
stackoverflow中的其他示例通常使用multiprocessing.Pool来并行化对列表执行的操作,即一次一个元素。在这种情况下,我正在做相反的事情,即对除第k个元素之外的每个元素执行操作。请有人帮我指点正确的方向吗?
非常感谢提前。