我有一个数组(称为data_inputs),其中包含数百个天文学图像文件的名称。然后处理这些图像。我的代码有效,并且需要几秒钟来处理每个图像。但是,一次只能执行一张图像,因为我是通过for循环运行阵列:
data_inputs
for
for name in data_inputs: sci=fits.open(name+'.fits') #image is manipulated
没有理由我必须先修改映像,因此可以利用计算机上的所有4个内核,每个内核都通过for循环在不同的映像上运行吗?
我已经阅读了有关该multiprocessing模块的信息,但是不确定如何在我的情况下实现它。我热衷于multiprocessing工作,因为最终我必须在10,000幅以上的图像上运行它。
multiprocessing
您可以简单地使用multiprocessing.Pool:
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