Не могу объединить результаты всех процессов Pool. Словарь outcomes содержит лишь 288 элементов из 411 необходимых. Вероятно это 1 или 2 потока из 3-х. Ниже код.
from itertools import repeat
from multiprocessing import Pool, Manager
def reader(entry, outcomes): #other args are constant
.............................................
#Some condition:
prediction = min(distances) + (mlc_data[min(distances)[1]],)
outcomes[entry_pairs[' '.join(entry)]] = prediction
return outcomes
manager = Manager()
outcomes = manager.dict()
with Pool(3) as p:
output = p.starmap(reader, zip(input[0], repeat(outcomes)))
p.close()
p.join()
В тоже время словарь output содержит 411** 2 элементов, что указывает на то, что код плохо оптимизирован.