我有一个反复运行的脚本,在这个过程中,它将一个图形保存到一个文件夹中。过了一段时间,我开始收到关于记忆中有太多开放数字的警告。
我检查了关于这个主题的其他问题,例如,这个问题,并将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')
然而,过了一段时间,我的记忆和警告中不断堆积着数字。我哪里错了?
警告如下:
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.
在阅读官方文档时,我认为plt.close('all')
只关闭窗口而不删除图形(https://matplotlib.org/1.3.0/api/pyplot_api.html#matplotlib.pyplot.close)。
据我所知,您需要清除以下数字:
fig.clf()
plt.close()
来源:(如何在创建matplotlib图形后释放内存(