matplotlib:在绘图完成后释放内存

时间:2014-02-03 14:20:01

标签: python memory-management matplotlib plot

我想知道在绘图完成后释放内存的正确方法,因为我在循环中绘制多个图像时遇到RuntimeError: Could not allocate memory for image错误。

目前我在另一个代码中有以下命令可以做到这一点:

import matplotlib.pyplot as plt

# The code
.....

# Make plot
fig = plt.figure()
# Plotting stuff.
plt.imshow(...)
plt.plot(...)
plt.scatter(...)

# Save plot to file.
plt.savefig(...)

# Release memory.
plt.clf()
plt.close()

this answer中的评论指出,正确的语法实际上是plt.close(fig),但得出的最高答案given here表示plt.clf()已足够且未提及{{1} }}

问题是:在将绘图保存到文件后,释放内存的正确命令是什么?我是否需要.close.clf,或者其中一个是否足够?

1 个答案:

答案 0 :(得分:2)

我想为您建议一种替代方法。请注意imshow会为您返回句柄。获取对此的引用,并在该对象上使用set_data方法进行后续迭代。

>>> h = plt.imshow(np.zeros([480, 640]))
>>> h
<matplotlib.image.AxesImage at 0x47a03d0>
>>> for img in my_imgs:
...     h.set_data(img)  #etc