I *am* able to see the same leak in 0.90.1 using Agg, Pdg, Ps, and
Svg with the same memory amount being leaked each time, so its
probably in matplotlib code, although I do not have the SVN sources to
check it there to see if it has been fixed there.  I was originally
using the wxAgg backend, but during the batch job really all i needed
was the actual histogram numbers, so I looked through the code and
found matplotlib.mlab.hist which is all I really need, and doesn't
leak ;-).

Thanks for the help,
Luke Robison


On 8/9/07, Michael Droettboom <[EMAIL PROTECTED]> wrote:
> There have been a number of memory leaks resolved since the 0.90.1
> release.  However, there are still known memory leaks in all of the GUI
> backends, some of which are unfortunately just beyond easy reach of
> matplotlib.  If this is an automated process and you only care about the
> file output, you could try using the "Agg", "Pdf", "Ps" or "Svg"
> backends, e.g.:
>
>         import matplotlib
>         matplotlib.use("Agg")
>
> I tried your script with both 0.90.1 and the latest svn, and I could
> reproduce your leak with the TkAgg backend, but not with the Agg backend.
>
> If you need a GUI, you may want to try using the latest svn version if
> you can.  The leaks still exist there, but they are much smaller.
>
> BTW -- you can get the version of matplotlib with:
>
>  >>> import matplotlib
>  >>> matplotlib.__version__
> '0.90.1'
>
> Cheers,
> Mike
>
>
> Luke Robison wrote:
> > I'm writing a program that processes ~ 25,000 jobs and each iteration
> > draws a histogram and writes out some of the output.  I let it run all
> > night and when I came back, python was filling up all my memory
> > (2Gigs) and was thrashing on and off of swap.  I narrowed the problem
> > down to my calling of the hist() function, and was able to reproduce
> > it in the following code I copied from the mpl website.
> >
> > Am I not properly closing the figure somehow?
> > Has this issue already been addressed?
> >
> > I recently installed version 0.90.1 of matplotlib, although I don't
> > see any easy way to verify that version number from within python.
> >
> > -Luke Robison
> >
> >
> > Code:
> > -------------------
> > import os,time,sys
> > from pylab import *
> >
> > def report_memory(i):
> >     pid = os.getpid()
> >     a2 = os.popen('ps -p %d -o rss,sz' % pid).readlines()
> >     print i, '  ', a2[1],
> >     return int(a2[1].split()[1])
> >
> > # take a memory snapshot on indStart and compare it with indEnd
> > indStart, indEnd = 100, 150
> > for i in range(indStart,indEnd):
> >     ind = arange(100)
> >     xx = rand(len(ind))
> >
> >     figure(1)
> >     hist(xx)
> >     close(1)
> >
> > # wait a few cycles for memory usage to stabilize
> >     if i==indStart: start = val
> >     if i>indStart:
> >         end = val
> >         print 'Average memory consumed per loop: %1.4fk bytes' % \
> >               ((end-start)/float(indEnd-indStart))
> >
> > -----------------
> >
> > Output:
> >
> >
> > python memtest.py
> >
> > Average memory consumed per loop: 0.0000k bytes
> > 102    39808 21991
> > Average memory consumed per loop: 0.0000k bytes
> > 103    39828 21991
> > Average memory consumed per loop: 0.0000k bytes
> > 104    39852 22024
> > Average memory consumed per loop: 0.6600k bytes
> > 105    39876 22024
> > Average memory consumed per loop: 0.6600k bytes
> > 106    39908 22024
> > Average memory consumed per loop: 0.6600k bytes
> > 107    39932 22024
> > Average memory consumed per loop: 0.6600k bytes
> > 108    39960 22024
> > Average memory consumed per loop: 0.6600k bytes
> > 109    39980 22057
> > Average memory consumed per loop: 1.3200k bytes
> > 110    40008 22057
> > Average memory consumed per loop: 1.3200k bytes
> > 111    40032 22057
> > Average memory consumed per loop: 1.3200k bytes
> > 112    40056 22057
> > Average memory consumed per loop: 1.3200k bytes
> > 113    40084 22057
> > Average memory consumed per loop: 1.3200k bytes
> > 114    40104 22090
> > Average memory consumed per loop: 1.9800k bytes
> > 115    40132 22090
> > Average memory consumed per loop: 1.9800k bytes
> > 116    40156 22090
> > Average memory consumed per loop: 1.9800k bytes
> > 117    40180 22090
> > Average memory consumed per loop: 1.9800k bytes
> > 118    40208 22090
> > Average memory consumed per loop: 1.9800k bytes
> > 119    40232 22123
> > Average memory consumed per loop: 2.6400k bytes
> > 120    40256 22123
> > Average memory consumed per loop: 2.6400k bytes
> > 121    40280 22123
> > Average memory consumed per loop: 2.6400k bytes
> > 122    40304 22123
> > Average memory consumed per loop: 2.6400k bytes
> > 123    40328 22123
> > Average memory consumed per loop: 2.6400k bytes
> > 124    40356 22123
> > Average memory consumed per loop: 2.6400k bytes
> > 125    40380 22156
> > Average memory consumed per loop: 3.3000k bytes
> > 126    40404 22156
> > Average memory consumed per loop: 3.3000k bytes
> > 127    40428 22156
> > Average memory consumed per loop: 3.3000k bytes
> > 128    40452 22156
> > Average memory consumed per loop: 3.3000k bytes
> > 129    40476 22156
> > Average memory consumed per loop: 3.3000k bytes
> > 130    40500 22189
> > Average memory consumed per loop: 3.9600k bytes
> > 131    40528 22189
> > Average memory consumed per loop: 3.9600k bytes
> > 132    40548 22189
> > Average memory consumed per loop: 3.9600k bytes
> > 133    40576 22189
> > Average memory consumed per loop: 3.9600k bytes
> > 134    40596 22189
> > Average memory consumed per loop: 3.9600k bytes
> > 135    40624 22222
> > Average memory consumed per loop: 4.6200k bytes
> > 136    40652 22222
> > Average memory consumed per loop: 4.6200k bytes
> > 137    40676 22222
> > Average memory consumed per loop: 4.6200k bytes
> > 138    40700 22222
> > Average memory consumed per loop: 4.6200k bytes
> > 139    40724 22222
> > Average memory consumed per loop: 4.6200k bytes
> > 140    40744 22222
> > Average memory consumed per loop: 4.6200k bytes
> > 141    40768 22255
> > Average memory consumed per loop: 5.2800k bytes
> > 142    40800 22255
> > Average memory consumed per loop: 5.2800k bytes
> > 143    40824 22255
> > Average memory consumed per loop: 5.2800k bytes
> > 144    40848 22255
> > Average memory consumed per loop: 5.2800k bytes
> > 145    40872 22255
> > Average memory consumed per loop: 5.2800k bytes
> > 146    40896 22288
> > Average memory consumed per loop: 5.9400k bytes
> > 147    40916 22288
> > Average memory consumed per loop: 5.9400k bytes
> > 148    40940 22288
> > Average memory consumed per loop: 5.9400k bytes
> > 149    40972 22288
> > Average memory consumed per loop: 5.9400k bytes
> >
> >
> > as you can see, the memory consumption is increasing each loop, and
> > furthermore, and an increasing rate :-(
> >
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by: Splunk Inc.
> > Still grepping through log files to find problems?  Stop.
> > Now Search log events and configuration files using AJAX and a browser.
> > Download your FREE copy of Splunk now >>  http://get.splunk.com/
> > _______________________________________________
> > Matplotlib-users mailing list
> > Matplotlib-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to