У меня есть фрагмент кода (Python 3.7) в ячейке ноутбука Jupyter, который генерирует фрейм данных pandas (df), содержащий пустые массивы.
Я проверяю потребление памяти df, просто посмотрев наприложение системного монитора, предустановленное в Ubuntu.
Проблема в том, что, если я запускаю ячейку второй раз, потребление памяти удваивается, даже если df назначен той же переменной.
Если язапускать несколько раз одну и ту же ячейку, системе не хватит памяти, и ядро будет самокрашиваться.
Использование del df
или gc.collect()
также не освободит память.
Перезапуск ядра ноутбука - единственный способ освободить память.
На практике Я ожидаю, что память останется примерно такой же, потому что я просто переназначаю новый df на ту же самую переменную иснова.
Действительно, память накапливается, только если я запускаю код на Linux-машине и в ноутбуке.Если я запускаю тот же код через терминал python script.py
или если я запускаю тот же самый ноутбук на macOS, нагрузка на память не изменится, я могу запустить одну и ту же ячейку несколько раз, и занятая память останется стабильной (как и ожидалось).
Можете ли вы помочь мне указать, откуда возникла проблема и как ее решить?
PS Как Python, так и Jupiter установлены вместе с Anaconda 2018.12 в Ubuntu 18.04.
Iзадавали тот же вопрос сообществу Ubuntu, так как я не уверен, что это строго связано с самим питоном, но я до сих пор не получил ответов.