В дополнение к строке вы можете передать индекс каждому работнику, чтобы он знал, в каком файле он должен сохранить dict. Я реализовал простой пример следующим образом:
from multiprocessing import Pool
import json
def worker(args):
i, row = args
# create object
current_thread_dict = {
'row': row,
'ind': i,
}
# add stuff to dict
if not row.startswith('data'):
current_thread_dict['special'] = row.upper()
else:
current_thread_dict['special'] = None
current_thread_dict['summary'] = '{row} - {ind} (special: {special})'\
.format(**current_thread_dict)
# save dict
with open(f'output{i}.json', 'w') as f:
json.dump(current_thread_dict, f, indent=2)
def main():
rows = ['data1', 'wow', 'data3', 'banana']
with Pool(processes=16) as p:
results = p.map(worker, enumerate(rows), chunksize=1)
print('results:', results)
if __name__ == '__main__':
main()
Надеюсь, это было полезно!