当前位置:  开发笔记 > 编程语言 > 正文

如何在Python 3中重用流程池进行并行编程

如何解决《如何在Python3中重用流程池进行并行编程》经验,为你挑选了0个好方法。

我是并行编程的新手.我的任务是分析数百个数据文件.这些数据中的每一个都接近300MB,并且可以切成多个切片.我的电脑是一台4芯电脑.我希望尽快得到每个数据的结果.
每个数据文件的分析包括2个程序.首先,将数据读入内存,然后将其切片为切片,这是密集型工作.然后,对此文件的切片进行大量计算,这是cpu密集型的.
所以我的策略是将这些文件分组为4组.对于这些文件的每一组,首先,将4个文件的所有数据读入内存,4个进程中有4个进程.代码就像,

with Pool(processes=4) as pool:
    data_list = pool.map(read_and_slice, files)  # len(files)==4

然后对于每个datadata_list,做4个过程的计算工作.

for data in data_list:  # I want to get the result of each data asap
    with Pool(processes=4) as pool:
        result_list = pool.map(compute, data.slices)  # anaylyze each slice of data
    analyze(result_list)  # analyze the results of previous procedure, for example, get the average.

然后去另一组.
所以问题是在计算数百个文件的整个过程中,池被重建多次.我怎样才能避免重新创建池和进程的开销?我的代码中是否有大量内存开销?有没有更好的方法让我尽可能少地花时间?

谢谢!

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有