あなたは非常にメモリが不足していて、何か非常にかさばっていない限り、絶対にしないでください。あなたが通常のプログラムを書いているならば、ガベージコレクタはすべてを処理する必要があります。
大量の記事を書く場合は、del
はオブジェクトを削除せず、単に逆参照することがわかります。私。変数はもはやオブジェクトデータが格納されているメモリ内の場所を参照しません。その後、メモリが解放されるように(自動的に行われるように)ガベージコレクタでクリーンアップする必要があります。
ガベージコレクタにオブジェクトのクリーニングを強制する方法もあります。は、del
を実行した後に役立ちます。
import gc
a = [i for i in range(1, 10 ** 9)]
...
del a
# Object [0, 1, 2, ..., 10 ** 9 - 1] is not reachable but still in memory
gc.collect()
# Object deleted from memory
更新:例えば、コメントで本当に良いのノート。メモリ内のオブジェクトへの他の参照を監視します。例えば:このブロックの実行後
import gc
a = [i for i in range(1, 10 ** 9)]
b = a
...
del a
gc.collect()
、大きなアレイは依然としてb
介して到達可能である、洗浄されません。
いいえ。インタプリタは、変数が範囲外になると、つまりコンストラクタが戻るとすぐに変数を自動的に解放します。 'del'は非常にまれにしか役に立ちません。 –
決して、ガベージコレクションがあります – PYPL
関連:http://stackoverflow.com/questions/34430314/python-lifetime-memory-scope-of-local-variables-inside-a-function –