我有一个数组(名为data_inputs
),其中包含数百个天文图像文件的名称。然后对这些图像进行操作。我的代码有效,每处理一张图片需要几秒钟。但是,它只能一次处理一张图片,因为我正在通过for
循环运行该数组:
for name in data_inputs:
sci=fits.open(name+'.fits')
#image is manipulated
没有必要在其他图像之前修改图像,因此是否可能利用我的计算机上的所有4个核心,使每个核心通过for循环处理不同的图像?
我已经阅读了关于multiprocessing
模块的资料,但不确定如何在我的情况下实现它。
我渴望让multiprocessing
工作,因为最终我将不得不运行这个程序在10,000多张图像上。
pool = Pool(os.cpu_count())
这是一种更通用的使用多进程的方式。 - Lior Magenos.cpu_count()
是在Python 3.4中添加的。对于Python 2.x,请使用multiprocessing.cpu_count()
。 - dwjPool()
时如果没有给processes
赋值,不管你使用的是Python 3还是Python 2版本,它都等同于Pool(processes=cpu_count())
- 所以在任何一个版本中最好的做法都是使用Pool()
。 https://docs.python.org/2/library/multiprocessing.html - Kyle Pittman