[Numpy-discussion] matplotlib is breaking numpy
John Hunter
jdh2358@gmail....
Thu Nov 19 12:42:07 CST 2009
On Nov 19, 2009, at 12:35 PM, Mathew Yeates <mat.yeates@gmail.com>
wrote:
> Yeah, I tried that.
>
> Here's what I'm doing. I have an application which displays
> different dataset which a user selects from a drop down list. I want
> to overwrite the existing plot with a new one. I've tried deleting
> just about everything get matplotlib to let go of my data!
What is everything? Are you using pyplot or are you embedding mpl in
a GUI? If the latter, are you deleting the FigureCanvas? You will
also need to call gc.collect after deleting the mpl objects because we
use a lot of circular references. Pyplot close does this
automatically, but this does not apply to embedding.
How are you running you app? From the shell or IPython?
>
> Mathew
>
> On Thu, Nov 19, 2009 at 10:30 AM, John Hunter <jdh2358@gmail.com>
> wrote:
>
>
>
>
> On Nov 19, 2009, at 11:57 AM, Robert Kern <robert.kern@gmail.com>
> wrote:
>
> > On Thu, Nov 19, 2009 at 11:52, Mathew Yeates <mat.yeates@gmail.com>
> > wrote:
> >> There is definitely something wrong with matplotlib/numpy. Consider
> >> the
> >> following
> >>> from numpy import *
> >>> mydata=memmap('map.dat',dtype=float64,mode='w+',shape=56566500)
> >>> del mydata
> >>
> >> I can now remove the file map.dat with (from the command line) $rm
> >> map.dat
> >>
> >> However
> >> If I plot mydata before the line
> >>> del mydata
> >>
> >>
> >> I can't get rid of the file until I exit python!!
> >> Does matplotlib keep a reference to the data?
> >
> > Almost certainly.
> >
> >> How can I remove this
> >> reference?
> >
> > Probably by deleting the plot objects that were created and close
> all
> > matplotlib windows referencing the data. If you are using IPython,
> you
> > should know that many of the returned objects are kept in Out, so
> you
> > will need to clear that. There might be some more places internal to
> > matplotlib, I don't know.
> >
>
> Closing the figure window containg the data *should* be enough. In
> pylab/pyplot, this also triggers a call to gc.collect.
>
>
>
>
> > With some care, you can use gc.get_referrers() to find the objects
> > that are holding direct references to your memmap.
> >
> > --
> > 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
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion@scipy.org
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20091119/461ab8e9/attachment.html
More information about the NumPy-Discussion
mailing list