> 2008/12/10 Robert Kern <[EMAIL PROTECTED]>: > On Mon, Dec 8, 2008 at 19:15, frank wang <[EMAIL PROTECTED]> 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 _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion