She*_*hep 24 python memory-management matplotlib
似乎在matplotlib中创建一个图形的标准方法并不像我在python中所期望的那样:默认情况下fig = matplotlib.figure(),在循环中调用将保留所有创建的数字,并最终耗尽内存.
有相当 一 小,其处理的解决方法职位,但需要显式调用matplotlib.pyplot.close(fig)似乎有点hackish.我想要的是一个简单的方法来fig计算引用,所以我不必担心内存泄漏.有办法做到这一点吗?
Joe*_*ton 26
如果您在不使用的情况下创建图形plt.figure,则应按照您的预期对其进行引用计数.例如(这也是使用非交互式Agg后端.)
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
# The pylab figure manager will be bypassed in this instance.
# This means that `fig` will be garbage collected as you'd expect.
fig = Figure()
canvas = FigureCanvas(fig)
ax = fig.add_subplot(111)
Run Code Online (Sandbox Code Playgroud)
如果您只想保存数字而不是显示它们,您可以使用:
def savefig(*args, **kwargs):
plt.savefig(*args, **kwargs)
plt.close(plt.gcf())
Run Code Online (Sandbox Code Playgroud)
这可以说是不那么hacky,但无论如何。
| 归档时间: |
|
| 查看次数: |
7398 次 |
| 最近记录: |