title: matplotlib animation.save to animated gif very slow
body: <p>I'm animating a convergence process that I'm simulating in an IPython 3.1 notebook.  I'm visualizing the scatter plot result in a matplotlib animation, which I'm writing out to an animated gif via ImageMagick.  There are 3000 frames, each with about 5000 points.</p>
  
  <p>I'm not sure exactly how matplotlib creates these animation files, but it appears to cache up a bunch of frames and then write them out all together-- when I look at the CPU usage, it's dominated by python in the beginning and then by convert at the end.</p>
  
  <p>Writing out the gif is happening exceedingly slowly.  It's taking more than an hour to write out a 70MB file to an SSD on a modern MacBook Pro.  'convert' is taking the equivalent of 90% of one core on an 4 (8 hyperthread) core machine.</p>
  
  <p>It takes about 15 minutes to write the first 65MB, and over 2 hours to write the last 5MB.</p>
  
  <p>I think the interesting bits of the code follow-- if there's something else that would be helpful, let me know.</p>
  
  <pre><code>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]&gt;0,'blue','red')
  scat=plt.scatter(co._chrgs[::2,0],co._chrgs[::2,1],s=4,color=c,marker='o',alpha=0.25);
  ani=animation.FuncAnimation(fig,updateAnim,frames=mags.size,fargs=(co,scat,mags),blit=True);
  ani.save('Files/Capacitance/SpherePlateAnimation.gif',writer='imagemagick',fps=30);
  </code></pre>
  
  <p>Any idea what the bottleneck might be or how I might speed it up?  I'd prefer the write out time be small compared to simulation time.</p>
  
  <p>Version: ImageMagick 6.9.0-0 Q16 x86_64 2015-05-30 <a href="http://www.imagemagick.org" rel="noreferrer">http://www.imagemagick.org</a>
  Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
  Features: DPC Modules
  Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png ps rsvg tiff webp wmf x xml zlib</p>
  
  <p><code>ps -aef</code> reports:
  convert -size 432x720 -depth 8 -delay 3.3333333333333335 -loop 0 rgba:- Files/Capacitance/SpherePlateAnimation.gif</p>