Re: [Matplotlib-users] Memory leak somewhere?

2009-08-25 Thread pixolex pixolex
You made my day!

Long life to The close()

All my ram and swap file was sucked every time a run my script to generate
260 png images...almost killing my ubuntu!

On Tue, May 26, 2009 at 2:23 PM, John Hunter jdh2...@gmail.com wrote:

 On Tue, May 26, 2009 at 7:39 AM, Michael Droettboom md...@stsci.edu
 wrote:
  Does it help if you add a call to plt.clf() to the bottom of the loop?
 
  The pyplot interface keeps a reference around to every figure created
  until they are destroyed so that it can be obtained again by number
  (this is functionality inspired by matlab).  Alternatively, you can use
  the object-oriented interface to create the figure, which does not have
  this behavior, e.g., replace
 
fig = plt.figure()
 
  with
 
from matplotlib import figure
fig = figure.Figure()
 
  If all this doesn't help, let me know and I'll look further.
 
  Cheers,
  Mike
 
  iCy-fLaME wrote:
  I was trying to use matplotlib to plot a series of 2D images, but
  python was using up a large amount of RAM very quickly. I don't know
  matplotlib that well, so the chance are I am missing something, would
  appreciate it if anyone can point me to the right direction.
 
  I am using:
  Python 2.4.3 (#1, Jan 21 2009, 01:11:33)
  [GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2
 
  Example code to run in interpreter mode:
 
  
  from numpy import zeros
 
  x = 1651
  y = 452
  page = zeros((x, y)).astype('float')
 
  import matplotlib
  matplotlib.use('Agg')
  import matplotlib.pyplot as plt
 
  for i in range(1000):
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.imshow(page, cmap=plt.cm.spectral_r, extent=(-44, 176,
 -30,
  30), interpolation = 'bicubic', vmin = -0.003, vmax = 0.003)
title = Time = %(i)0.3es) % {'i':i}
ax.set_title(title,fontsize=14)
 
fig.colorbar(cax, ticks=[-2e-3, -1e-3, 0, 1e-3, 2e-3],
  orientation='horizontal')
 
fig.savefig('_tmp.' + str(i) + .png, dpi=300)


 This code creates 1000 different figures -- either reuse the same
 figure and clear it as Michael suggests

  fig = plt.figure(1)  # by putting 1 here you reuse the same fig
  fig.clf()  # and clear it

 or close the figure in the loop

  fig = plt.figure()
  # draw and save here
  plt.close(fig)

 JDH


 --
 Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
 is a gathering of tech-side developers  brand creativity professionals.
 Meet
 the minds behind Google Creative Lab, Visual Complexity, Processing, 
 iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
 Group, R/GA,  Big Spaceship. http://www.creativitycat.com
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users

--
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Memory leak somewhere?

2009-05-26 Thread Michael Droettboom
Does it help if you add a call to plt.clf() to the bottom of the loop?

The pyplot interface keeps a reference around to every figure created 
until they are destroyed so that it can be obtained again by number 
(this is functionality inspired by matlab).  Alternatively, you can use 
the object-oriented interface to create the figure, which does not have 
this behavior, e.g., replace

   fig = plt.figure()

with

   from matplotlib import figure
   fig = figure.Figure()

If all this doesn't help, let me know and I'll look further.

Cheers,
Mike

iCy-fLaME wrote:
 I was trying to use matplotlib to plot a series of 2D images, but
 python was using up a large amount of RAM very quickly. I don't know
 matplotlib that well, so the chance are I am missing something, would
 appreciate it if anyone can point me to the right direction.

 I am using:
 Python 2.4.3 (#1, Jan 21 2009, 01:11:33)
 [GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2

 Example code to run in interpreter mode:

 
 from numpy import zeros

 x = 1651
 y = 452
 page = zeros((x, y)).astype('float')

 import matplotlib
 matplotlib.use('Agg')
 import matplotlib.pyplot as plt

 for i in range(1000):
   fig = plt.figure()
   ax = fig.add_subplot(111)
   cax = ax.imshow(page, cmap=plt.cm.spectral_r, extent=(-44, 176, -30,
 30), interpolation = 'bicubic', vmin = -0.003, vmax = 0.003)
   title = Time = %(i)0.3es) % {'i':i}
   ax.set_title(title,fontsize=14)
   
   fig.colorbar(cax, ticks=[-2e-3, -1e-3, 0, 1e-3, 2e-3],
 orientation='horizontal')
   
   fig.savefig('_tmp.' + str(i) + .png, dpi=300)
   
 ### EOF 


 I tired to delete everything in the namespace, but the only way I can
 release the ram is by killing the python session.



 Thanks for all the helps in advance.



 iCy

 --
 Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
 is a gathering of tech-side developers  brand creativity professionals. Meet
 the minds behind Google Creative Lab, Visual Complexity, Processing,  
 iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
 Group, R/GA,  Big Spaceship. http://www.creativitycat.com 
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users
   

-- 
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA


--
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers  brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing,  
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA,  Big Spaceship. http://www.creativitycat.com 
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Memory leak somewhere?

2009-05-26 Thread John Hunter
On Tue, May 26, 2009 at 7:39 AM, Michael Droettboom md...@stsci.edu wrote:
 Does it help if you add a call to plt.clf() to the bottom of the loop?

 The pyplot interface keeps a reference around to every figure created
 until they are destroyed so that it can be obtained again by number
 (this is functionality inspired by matlab).  Alternatively, you can use
 the object-oriented interface to create the figure, which does not have
 this behavior, e.g., replace

   fig = plt.figure()

 with

   from matplotlib import figure
   fig = figure.Figure()

 If all this doesn't help, let me know and I'll look further.

 Cheers,
 Mike

 iCy-fLaME wrote:
 I was trying to use matplotlib to plot a series of 2D images, but
 python was using up a large amount of RAM very quickly. I don't know
 matplotlib that well, so the chance are I am missing something, would
 appreciate it if anyone can point me to the right direction.

 I am using:
 Python 2.4.3 (#1, Jan 21 2009, 01:11:33)
 [GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2

 Example code to run in interpreter mode:

 
 from numpy import zeros

 x = 1651
 y = 452
 page = zeros((x, y)).astype('float')

 import matplotlib
 matplotlib.use('Agg')
 import matplotlib.pyplot as plt

 for i in range(1000):
   fig = plt.figure()
   ax = fig.add_subplot(111)
   cax = ax.imshow(page, cmap=plt.cm.spectral_r, extent=(-44, 176, -30,
 30), interpolation = 'bicubic', vmin = -0.003, vmax = 0.003)
   title = Time = %(i)0.3es) % {'i':i}
   ax.set_title(title,fontsize=14)

   fig.colorbar(cax, ticks=[-2e-3, -1e-3, 0, 1e-3, 2e-3],
 orientation='horizontal')

   fig.savefig('_tmp.' + str(i) + .png, dpi=300)


This code creates 1000 different figures -- either reuse the same
figure and clear it as Michael suggests

  fig = plt.figure(1)  # by putting 1 here you reuse the same fig
  fig.clf()  # and clear it

or close the figure in the loop

  fig = plt.figure()
  # draw and save here
  plt.close(fig)

JDH

--
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers  brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing,  
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA,  Big Spaceship. http://www.creativitycat.com 
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users