一尘不染

多处理for循环?

python

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

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

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

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


阅读 171

收藏
2020-12-20

共1个答案

一尘不染

您可以简单地使用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
2020-12-20