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

Scott Sinclair scott.sinclair.za at gmail.com
Wed Dec 10 00:42:07 EST 2008


> 2008/12/10 Robert Kern <robert.kern at gmail.com>:
> 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.

Of course, if you don't need to have access to the variables created
in your program from the IPython session, you can run the program in a
separate python process:

In [1]: !python memtest.py
Deleting <__main__.A object at 0xb7da5ccc>

In [2]: !python memtest.py
Deleting <__main__.A object at 0xb7e5fccc>

Cheers,
Scott



More information about the NumPy-Discussion mailing list