多处理for循环?

发布于 2021-01-29 19:35:33

我有一个数组(称为data_inputs),其中包含数百个天文学图像文件的名称。然后处理这些图像。我的代码有效,并且需要几秒钟来处理每个图像。但是,一次只能执行一张图像,因为我是通过for循环运行阵列:

for name in data_inputs:
    sci=fits.open(name+'.fits')
    #image is manipulated

没有理由我必须先修改映像,因此可以利用计算机上的所有4个内核,每个内核都通过for循环在不同的映像上运行吗?

我已经阅读了有关该multiprocessing模块的信息,但是不确定如何在我的情况下实现它。我热衷于multiprocessing工作,因为最终我必须在10,000幅以上的图像上运行它。

关注者
0
被浏览
53
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以简单地使用multiprocessing.Pool

    from multiprocessing import Pool
    
    def process_image(name):
        sci=fits.open('{}.fits'.format(name))
        <process>
    
    if __name__ == '__main__':
        pool = Pool()                         # Create a multiprocessing Pool
        pool.map(process_image, data_inputs)  # process data_inputs iterable with pool
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看