我在一个ipython 3.1笔记本上模拟一个收敛过程。我将散点图结果可视化为matplotlib动画,并通过ImageMagick将其写入动画gif有3000帧,每帧大约有5000个点。
我不确定MatPlotLib是如何创建这些动画文件的,但它似乎缓存了一堆帧,然后将它们一起写出来——当我看CPU使用情况时,它在开始时由Python控制,然后在结束时由Convert控制。
写出gif的速度非常慢。在现代MacBook Pro上,将一个70MB的文件写入固态硬盘需要一个多小时。convert'相当于4(8个超线程)核心机器上一个核心的90%。
写第一个65MB大约需要15分钟,写最后一个5MB需要2个多小时。
我想接下来会有一些有趣的代码——如果还有其他有用的东西,请告诉我。def updateAnim(i,cg,scat,mags):
if mags[i]==0: return scat,
cg.convergeStep(mags[i])
scat.set_offsets(cg._chrgs[::2,0:2])
return scat,
fig=plt.figure(figsize=(6,10))
plt.axis('equal')
plt.xlim(-1.2,1.2);plt.ylim(-1,3)
c=np.where(co._chrgs[::2,3]>0,'blue','red')
scat=plt.scatter(co._chrgs[::2,0],co._chrgs[::2,1],s=4,color=c,marker='o',alpha=0.25);
ani&#