On 11/18/10 5:05 PM, John Hunter wrote: > On Thu, Nov 18, 2010 at 2:20 PM, Benjamin Root<ben.r...@ou.edu> wrote: > >> Interesting analysis. One possible source of a leak would be some sort of >> dangling reference that still hangs around even though the plot objects have >> been cleared. By the time of the matplotlib 1.0.0 release, we did seem to >> clear out pretty much all of these, but it is possible there are still some >> lurking about. We should probably run your script against the latest svn to >> see how the results compare. > > In our experience, many of the GUI backends have some leak, and these > are in the GUI and not in mpl. Caleb, can you see if you can > replicate the leak with your example code using the agg backend (no > GUI). If so, could you post the code that exposes the leak. if not, > I'm afraid it is in wx and you might need to deal with the wx > developers.
Heh. Good timing! I just fixed a bug in Chaco involving a leaking cycle that the garbage collector could not clean up. The lesson of my tale of woe is that even if there is no leak when you run without wxPython, that doesn't mean that wxPython is the culprit. If any object in the connected graph containing a cycle (even if it does not directly participate in the cycle) has an __del__ method in pure Python, then the garbage collector will not clean up that cycle for safety reasons. Read the docs for the gc module for details. We use SWIG to wrap Agg and SWIG adds __del__ methods for all of its classes. wxPython uses SWIG and has the same problems. If there is a cycle which can reach a wxPython object, the cycle will leak. The actual cycle may be created by matplotlib, though. You can determine if this is the case pretty easily, though. Call gc.collect() then examine the list gc.garbage. This will contain all of those objects with a __del__ that prevented a cycle from being collected. I recommend using objgraph to diagram the graph of references to those objects. It's invaluable to actually see what's going on. http://pypi.python.org/pypi/objgraph -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today http://p.sf.net/sfu/msIE9-sfdev2dev _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users