On Nov 19, 2009, at 12:35 PM, Mathew Yeates <[email protected]>
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 <[email protected]>
wrote:
On Nov 19, 2009, at 11:57 AM, Robert Kern <[email protected]>
wrote:
> On Thu, Nov 19, 2009 at 11:52, Mathew Yeates <[email protected]>
> 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
> [email protected]
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion