[Numpy-discussion] Memory leak found in ndarray (I think)?

Wes McKinney wesmckinn at gmail.com
Mon Jul 12 15:07:43 EDT 2010


On Mon, Jul 12, 2010 at 2:22 PM, Wes McKinney <wesmckinn at gmail.com> wrote:
> This one was quite a bear to track down, starting from the of course
> very high level observation of "why is my application leaking memory".
> I've reproduced it on Windows XP using NumPy 1.3.0 on Python 2.5 and
> 1.4.1 on Python 2.6 (EPD). Basically it seems that calling
> .astype(bool) on an ndarray slice with object dtype is leaving a
> hanging reference count, should be pretty obvious to see:
>
> from datetime import datetime
> import numpy as np
> import sys
>
> def foo(verbose=True):
>    arr = np.array([datetime.today() for _ in xrange(1000)])
>    arr = arr.reshape((500, 2))
>    sl = arr[:, 0]
>
>    if verbose: print 'Rec ct of index 0: %d' % sys.getrefcount(sl[0])
>
>    for _ in xrange(10):
>        foo = sl.astype(bool)
>
>    if verbose: print 'Rec ct of index 0: %d' % sys.getrefcount(sl[0])
>
> if __name__ == '__main__':
>    foo()
>    for i in xrange(10000):
>        if not i % 1000: print i
>        foo(verbose=False)
>
> On my machine this bleeds about 100 MB of memory that you don't get
> back-- let me know if I've misinterpreted the results. I'll happily
> create a ticket on the Trac page.
>
> Thanks,
> Wes
>

Posted in Ticket #1542

http://projects.scipy.org/numpy/ticket/1542



More information about the NumPy-Discussion mailing list