forループをマルチプロセスで処理しますか? 質問する

forループをマルチプロセスで処理しますか? 質問する

数百の天文画像ファイルの名前を含む配列 ( ) があります。これらの画像は操作されます。私のコードは機能し、各画像の処理に数秒かかります。ただし、配列をループdata_inputsで実行しているため、一度に処理できる画像は 1 つだけです。for

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

あるイメージを他のイメージよりも先に修正しなければならない理由はないので、マシン上の 4 つのコアすべてを使用して、各コアが異なるイメージで for ループを実行することは可能でしょうか?

モジュールについては読みましたmultiprocessingが、自分のケースでどのように実装すればよいかわかりません。multiprocessing最終的には 10,000 枚以上の画像でこれを実行する必要があるため、すぐに作業を開始したいと思っています。

ベストアンサー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

おすすめ記事