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