与不同的输入文件和不同的输出文件并行运行相同的功能



我在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)

现在,我关注的是,当多处理如何区分list_of_output_files的多处理时,(out.txt(中的输出文件是相同的,而我将它们作为最终输出文件将其串联到文件中。有建议吗?基本上,在上面的示例中,将文件分为3个文件(splited_input_file [](,并期待3个输出文件(list_of_output_files(,但是a中的路径是相同的(out.txt(,并且它们可能会在并行进程中访问和可能会弄乱或丢失一些数据。

您是否希望最终输出文件按顺序进行(即Splited_input_file [0] Splited_input_file1 Splited_input_file [2]之类的东西(?如果是这样,您可以定义一个函数,该函数将要编写的数据和输出文件名作为参数,然后将多处理运行3次使用不同的文件名来避免并行访问3个进程。p>要注意的另一件事是,您实际上可以使用线程比多处理更少的开销,因为这是一个I/O绑定过程(读取编写文件(,并为这些过程释放gil。

相关内容

  • 没有找到相关文章

最新更新