[Numpy-discussion] how do I delete unused matrix to save the memory?

Robert Kern robert.kern at gmail.com
Tue Dec 9 22:03:00 EST 2008


On Mon, Dec 8, 2008 at 19:15, frank wang <f.yw at hotmail.com> wrote:
> Hi,
>
> I have a program with some variables consume a lot of memory. The first time
> I run it, it is fine. The second time I run it, I will get MemoryError. If I
> close the ipython and reopen it again, then I can run the program once. I am
> looking for a command to delete the intermediate variable once it is not
> used to save memory like in matlab clear command.

How are you running this program? Be aware that IPython may be holding
on to objects and preventing them from being deallocated. For example:

In [7]: !cat memtest.py
class A(object):
    def __del__(self):
        print 'Deleting %r' % self


a = A()

In [8]: %run memtest.py

In [9]: %run memtest.py

In [10]: %run memtest.py

In [11]: del a

In [12]:
Do you really want to exit ([y]/n)?

$ python memtest.py
Deleting <__main__.A object at 0x915ab0>


You can remove some of these references with %reset and maybe a
gc.collect() for good measure.


In [1]: %run memtest

In [2]: %run memtest

In [3]: %run memtest

In [4]: %reset
Once deleted, variables cannot be recovered. Proceed (y/[n])?  y
Deleting <__main__.A object at 0xf3e950>
Deleting <__main__.A object at 0xf3e6d0>
Deleting <__main__.A object at 0xf3e930>

-- 
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



More information about the NumPy-Discussion mailing list