Python Matplotlib不';t在savefig和close()之后释放内存

Python Matplotlib不';t在savefig和close()之后释放内存,python,matplotlib,memory-leaks,Python,Matplotlib,Memory Leaks,我有一段代码,可以很好地循环一两次,但最终它会建立内存。我尝试使用内存\u探查器查找内存泄漏,结果如下: row_nr Memory_usage Memory_diff row_text 470 52.699 MiB 0.000 MiB ax.axis('off') 471 167.504 MiB 114.805 MiB fig.savefig('figname.png', dpi=600) 472 167.504 M

我有一段代码,可以很好地循环一两次,但最终它会建立内存。我尝试使用
内存\u探查器
查找内存泄漏,结果如下:

row_nr    Memory_usage    Memory_diff    row_text
 470     52.699 MiB     0.000 MiB      ax.axis('off')
 471     167.504 MiB    114.805 MiB    fig.savefig('figname.png', dpi=600)
 472     167.504 MiB    0.000 MiB      fig.clf()
 473     109.711 MiB    -57.793 MiB    plt.close()
 474     109.711 MiB    0.000 MiB      gc.collect()`
我创建的图形如下所示:
fig,ax=plt.subplot()

有没有关于109-52=57 MiB去了哪里的建议

我正在使用python 3.3

# Clear the current axes.
plt.cla() 
# Clear the current figure.
plt.clf() 
# Closes all the figure windows.
plt.close('all')
希望这能帮助你

plt.ioff()
在笔记本中为我工作过,
plt.关闭(图)
否则。

清除当前轴。
plt.cla()
#清除当前数字。
plt.clf()
#关闭所有图形窗口。
plt.close(“全部”)
plt.关闭(图)
gc.collect()
这对我有用。把这些线放在循环的末尾

从这里开始:

其原始参考号为:

要获取ax和figure,请执行以下操作:

而不是:

import matplotlib.pyplot as plt
fig,ax = plt.subplots(1)
使用:


也不需要执行
plt.close()
或任何操作。这对我很有效。

可能重复的,虽然这是一个解决方法,但不是这个问题的明确解决方案。这个问题更一般,可能是其中一个场景涵盖了您的案例。如果没有,请让我们了解有关用例的更多细节。感谢您的尝试,不幸的是,它工作正常,我没有在django中运行任何东西,因此这没有帮助。我可以尝试多重处理,但如上所述,只是避免了问题,并不能解决它。我正在使用子图(“fig,ax=plt.subplot()”),所以我不能从fig=plt.figure()更改为fig=figure.figure(),或者?还有其他建议吗?请在每个循环结束时尝试
plt.close('all')
。适用于我的
agg
后端。还可以添加
importgc;gc.collect()
以确保清除内存!
from matplotlib import figure
fig = figure.Figure()
ax = fig.subplots(1)