Mat*_*hew 5 python plot memory-leaks seaborn jupyter-notebook
我在使用 Jupyter 笔记本中调用的函数管理内存时遇到了一些问题。此函数包含进行一些成对数据分析的计算。在迭代处理期间,循环会生成一些绘图并将这些绘图写入磁盘。
然而,即使在关闭情节之后,我似乎也将大约 40MB/s 的速度累积到 RAM 中。
这是以这种速度泄漏的简化示例:
for x in combinations(range(m.num_parameters + 1), 2):
_plot = sns.pairplot(data=m_df, x_vars=[x[0]], y_vars=[x[1]-1],
size=5)
_plot.savefig(directory+'{}_{}'.format([x[0]], [x[1]-1]))
sns.plt.clf()
sns.plt.close()
# I can even run the following to no avail:
del(_plot)
Run Code Online (Sandbox Code Playgroud)
作为参考,我的数据结构类似于:
m_df = pd.DataFrame.from_dict(m.parameters)
m_df.columns = m.parameters.keys()
Run Code Online (Sandbox Code Playgroud)
我已经使用 mprun、pympler 等各种方法在 Jupyter 内部进行了大量内存分析。当我简单地注释掉绘图例程时出现了关键提示,就像上面例子中的那样,并注意到我不再填满 RAM。
作为澄清说明,这些图都没有在笔记本中呈现,因为上面的代码片段代表了一个导入并提供数据以进行处理的模块。
我还发现,在例程完成后(或键盘中断后),我可以通过在笔记本中手动运行垃圾收集来释放内存。
有没有人知道为什么这些情节对象似乎没有正确关闭?
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |