Вот мой код:
from memory_profiler import profile
@profile
def mess_with_memory():
huge_list = range(20000000)
del huge_list
print "why this kolaveri di?"
Это результат, когда я запускал его из интерпретатора:
Линия # Использование памяти Увеличение строки содержимого
3 7.0 MiB 0.0 MiB @profile
4 def mess_with_memory():
5
6 628.5 MiB 621.5 MiB huge_list = range(20000000)
7 476.0 MiB -152.6 MiB del huge_list
8 476.0 MiB 0.0 MiB print "why this kolaveri di"
Если вы заметили результат, создав огромный список, потребляемый 621,5 МБ, при удалении он просто высвободил 152,6 МБ. Когда я проверил docs, я нашел следующее утверждение:
the statement del x removes the binding of x from the namespace referenced by the local scope
Итак, я думаю, он не удалял сам объект, а просто отключал его. Но что он сделал в том, что он освободил столько места (152.6 МБ). Может кто-нибудь, пожалуйста, возьмите боль, чтобы объяснить мне, что здесь происходит?