У меня есть метод в Python, который принимает большой файл в качестве ввода и возвращает файл в качестве вывода.
Я хочу распараллелить процесс, используя многопроцессорность (пул). Для этого я разделил входной файл, скажем, на 3 файла поменьше.
Мой метод:
def A(self, input_file):
....
....
....
output_file = out.txt #(path to output file)
....
....
output_file = do_smth(input_file)
return output_file
То, как я хочу повысить производительность с помощью многопроцессорной обработки:
splited_input_file = split_file(input_file)
p = Pool(5)
list_of_output_files = p.map(A, splited_input_file[0], splited_input_file[1], splited_input_file[2])
output_file = concatenate_files(list_of_output_files)
Теперь меня беспокоит то, что выходной файл в A (out.txt) остается тем же, когда многопроцессорная система работает так, как будут различаться list_of_output_files, и я объединяю их в файл как конечный выходной файл. Любое предложение? По сути, в приведенном выше примере файл разделен на 3 файла (splited_input_file []), ожидаются также 3 выходных файла (list_of_output_files), но путь в A такой же (out.txt), и к ним можно получить доступ в параллельных процессах и может испортить или потерять некоторые данные.