フィットファイルからアニメーション(ムービー)を作成するスクリプトを書きました。1 つのファイルのサイズは 2.8 MB で、no. ファイルの数は9000です。コードは次のとおりです
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import os
import pyfits
import glob
import re
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)
global numbers
numbers=re.compile(r'(\d+)')
def numericalSort(value):
parts = numbers.split(value)
parts[1::2] = map(int, parts[1::2])
return parts
image_list=glob.glob('/kalib/*.fits')
image_list= sorted(image_list,key=numericalSort)
print image_list
fig = plt.figure("movie")
img = []
for i in range(0,len(image_list)):
hdulist = pyfits.open(image_list[i])
im = hdulist[0].data
img.append([plt.imshow(im,cmap=plt.cm.Greys_r)])
ani = animation.ArtistAnimation(fig,img, interval=20, blit=True,repeat_delay=0)
ani.save('movie.mp4', writer=writer)
私の問題は、配列 img[] を作成するときだと思います... 8 GB の RAM があり、RAM がいっぱいになると、オペレーティング システムが python スクリプトを終了します。
私の質問は、どうすれば 9000 個のファイルを読み込んでアニメーションを作成できるのでしょうか? いくつかのバッファまたはいくつかの並列処理を作成することは可能ですか?
なにか提案を?