数百の天文画像ファイルの名前を含む配列 ( ) があります。これらの画像は操作されます。私のコードは機能し、各画像の処理に数秒かかります。ただし、配列をループdata_inputs
で実行しているため、一度に処理できる画像は 1 つだけです。for
for name in data_inputs:
sci=fits.open(name+'.fits')
#image is manipulated
あるイメージを他のイメージよりも先に修正しなければならない理由はないので、マシン上の 4 つのコアすべてを使用して、各コアが異なるイメージで for ループを実行することは可能でしょうか?
モジュールについては読みましたmultiprocessing
が、自分のケースでどのように実装すればよいかわかりません。multiprocessing
最終的には 10,000 枚以上の画像でこれを実行する必要があるため、すぐに作業を開始したいと思っています。
ベストアンサー1
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