plt.close («all») не избавляет от предупреждения «слишком много цифр» - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть скрипт, который запускается несколько раз, и в процессе он сохраняет фигуру в папку. Через некоторое время я начинаю получать предупреждения о слишком большом количестве открытых фигур в памяти.

Я проверил другие вопросы на топи c, например, этот и добавил plt.close('all') к моему код, теперь он выглядит так:

fig, ax = plt.subplots(figsize=(17,8))
plt.hist(results_df['Diff'], bins=100, density=True, histtype='step')
plt.savefig(f'backtester_results/figures/rf_model_{n_days}_data_and_{lag}_lag.png',
                format='png')
plt.close('all')

И все же через некоторое время я продолжаю накапливать цифры и предупреждения. Где я go ошибся?

Вот предупреждение:

RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (matplotlib.pyplot.figure) are retained until explicitly closed and may consume too much memory.

1 Ответ

1 голос
/ 05 апреля 2020

При чтении официальной документации я бы предположил, что plt.close('all') закрывает только windows без удаления цифр (https://matplotlib.org/1.3.0/api/pyplot_api.html#matplotlib .pyplot.close ).

Как я Я понимаю, что вам нужно очистить рисунок следующим образом:

fig.clf()
plt.close()

Источник: ( Как освободить память после создания фигур matplotlib )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...