Ваша проблема заключается в следующем:
dic['count'] += c
Он читает ваш словарь, затем увеличивается на c и сохраняет значение, но это не операция atomi c. Другой процесс мог изменить словарь между операциями чтения и записи, и тогда ваша запись «перезапишет» изменение, которое произошло между операциями.
Вы можете решить эту проблему, передав блокировку и используя ее:
def func(dic, lock, c):
with lock:
dic['count'] += c
# time.sleep(0.1)
if __name__=="__main__":
d = Manager().dict() # a manager to enable data sharing b
l = Manager().Lock()
d['count'] = 0
args = [(d, l,1), (d,l,2), (d,l,3), (d,l,4), (d,l,5)]
pool = Pool(5)
pool.starmap(func, args)
pool.close()
pool.join()
print(f'dic={d}')
Это гарантирует, что вся операция словаря останется atomi c.