我在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),它们可能在并行进程中被访问,并且可能会弄乱或丢失一些数据。