Если вы уже используете concurrent.futures, наилучшим способом, IMO, является использование карты:
import concurrent.futures
def matching(pair):
fuzz_ratio = fuzz.ratio(pair[0], pair[1]) # only calculate this once
if fuzz_ratio > 90:
return pair, fuzz_ratio
else:
return None
def main():
unique_combinations = [(1, 2), (2, 3), (3, 4)]
with concurrent.futures.ProcessPoolExecutor(max_workers=4) as executor:
for result in executor.map(matching, unique_combinations, chunksize=100):
if result:
# handle the results somehow
results.append(result[0])
match_score.append(results[1])
if __name__ == '__main__':
main()
Существует множество способов обработки результатов, но суть в том, что вы возвращаете значение из matching
, а затем получить его в executor.map
для l oop в main
. Документы здесь .