Как я могу освободить память после удаления переменной в Python? - PullRequest
0 голосов
/ 26 мая 2019

Я работаю над большим набором данных, состоящим из чисел с плавающей запятой, я не могу загрузить все сэмплы вместе из-за ограничений памяти, и мне приходится разбивать их на части, загружать одну часть и обучать мою сеть, после чего удалить ее и делай это для каждой части.

Моя проблема в том, как я могу удалить обученную часть данных и загрузить другую

Простая команда del my_var не освобождает память.

после этого я попытался %reset_selective "my var" в jupyter-notebook и gc.collect() Хотя я больше не могу получить доступ к этой переменной, но память все равно не освобождается.

python3

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Вы, вероятно, должны использовать subprocess, используя multiprocessing.

Взгляните на user4815162342 ответ в следующем посте:

Как использовать подпроцессы, чтобы заставить python освободить память?

0 голосов
/ 26 мая 2019

Python использует подсчет ссылок для управления памятью.Когда переменная выходит из области видимости (или явно удаляется, как вы это делаете), счетчик ссылок на объект, на который она указывает, уменьшается на 1. Как только счетчик ссылок достигает 0, объект собирается мусором (хотя вы не можетерассчитывать на точный момент, когда это произойдет).Возможно, ваша проблема в том, что либо у вас все еще есть имя, указывающее на рассматриваемые объекты, либо, возможно, вы удаляете копию данных.

Вам потребуется предоставить конкретный пример кода, чтобы получить более конкретную помощь.

...