python實際上,對於占用很大內存的對象,並不會馬上釋放。
舉例,a=range(10000*10000),會發現內存飆升一個多G,del a 或者a=[]都不能將內存降下來。。
del 可以刪除多個變量,del a,b,c,d
辦法:
import gc (garbage collector)
del a
gc.collect()
馬上內存就釋放了。
在IPython中用run運行程序時,都是在獨立的運行環境中運行,結束之后才將程序運行環境中的結果復制到IPython環境中,因此不會有變量被重復調用的問題。
如果你是指在自己的程序中想刪除所有全局變量的話,可以自己編寫一個clear函數,通過globals()獲取全局變量然后將其中不需要的內容刪除,例如下面的程序保留函數,類,模塊,刪除所有其它全局變量:
def clear():
for key, value in globals().items():
if callable(value) or value.__class__.__name__ == "module":
continue
del globals()[key]
不過程序中應該避免這種對全局變量的依賴。你也可以在IPython下用此函數清空全局變量。