あなたはそれがガベージコレクションではなく、すぐに削除に利用可能であるオブジェクトを削除したら - そうちょうどそれにいくつかの時間を与えるとし遅くなったり、遅くなったりしてgc.collect()
が発生する可能性があります。履歴に取りストレージの特定の量は参考のために、等、があるという点でPythonの3シェルがよりipython 2のように、実際には単に参照のため
python.exe
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import psutil
>>> import gc
>>> psutil.Process().memory_info().rss/2**20
13.2890625
>>> d = {x:x for x in range(10**7)}
>>> psutil.Process().memory_info().rss/2**20
359.13671875
>>> del d
>>> psutil.Process().memory_info().rss/2**20
13.5234375
>>> gc.collect()
0
>>> psutil.Process().memory_info().rss/2**20
13.4375
>>>
:
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import psutil
>>> psutil.Process().memory_info().rss/2**20
13.1875
>>> psutil.Process().memory_info().rss/2**20
13.20703125
>>> psutil.Process().memory_info().rss/2**20
13.20703125
>>> psutil.Process().memory_info().rss/2**20
13.20703125
>>> psutil.Process().memory_info().rss/2**20
13.20703125
>>> 22*3
66
>>> psutil.Process().memory_info().rss/2**20
13.25390625
>>> import gc
>>> psutil.Process().memory_info().rss/2**20
13.25390625
>>> gc.collect()
0
>>> psutil.Process().memory_info().rss/2**20
13.171875
>>>
翌朝機能で辞書の更新を行うことは異なっているかどうかを確認するために:あなたの製品コードは、あなたはまだ追跡する必要が参照にぶら下がっされる可能性がありますように
>>> psutil.Process().memory_info().rss/2**20
13.1484375
>>> D = {}
>>> psutil.Process().memory_info().rss/2**20
13.1484375
>>> def UpdateD(d, v):
... """ Add the text and value for v to dict d """
... d[v] = str(v)
...
>>> psutil.Process().memory_info().rss/2**20
13.16015625
>>> for x in range(10**7):
... UpdateD(D, x)
...
>>> psutil.Process().memory_info().rss/2**20
666.6328125
>>> del D
>>> psutil.Process().memory_info().rss/2**20
10.765625
>>> gc.collect()
0
>>> psutil.Process().memory_info().rss/2**20
12.8984375
>>>
をだから、見えます。
あなたは、python(または自動または半自動メモリ管理を備えた他の現代的な言語)のメモリ管理を制御できません。 – Daniel
これは実際にサーバープログラムでpythonを使用する必要がある場合、python3.5のソースコードを変更してサーバー上で使用できるようにするためには問題ですか? –
単なる考えですが、サブプロセスやマルチプロセスモジュールを使って大きな仕事をするのはどうですか? Linuxプロセスが終了すると、すべてのメモリを元に戻すことはできませんか? * python3.5のソースを修正する方法... *少なくとも、私にとっては初心者のように思えます。 –