コンテクスト
私はしばしば次のような状況に陥りました。
- 処理する必要のある画像ファイル名のリストがあります
- たとえばscipy.misc.imreadを使用して各画像を順番に読み取ります
- 次に、各画像に対して何らかの処理を行い、結果を返します
- 結果を画像ファイル名に沿ってシェルフに保存します
問題は、単に画像を読み取るだけで無視できないほどの時間がかかり、画像処理に匹敵するか、それよりも長くかかることです。
質問
ですから、理想的には画像nを処理しながら画像n+1を読み取ることができると考えていました。または、自動的に決定された最適な方法で複数の画像を一度に処理して読み取る方がさらに優れていますか?
マルチプロセッシング、スレッド、ツイスト、geventなどについて読んだことがありますが、どれを使用し、このアイデアを実装する方法がわかりません。誰かがこの種の問題の解決策を持っていますか?
最小限の例
# generate a list of images
scipy.misc.imsave("lena.png", scipy.misc.lena())
files = ['lena.png'] * 100
# a simple image processing task
def process_image(im, threshold=128):
label, n = scipy.ndimage.label(im > threshold)
return n
# my current main loop
for f in files:
im = scipy.misc.imread(f)
print process_image(im)