我想知道在绘图完成后释放内存的正确方法,因为我在循环中绘制多个图像时遇到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
,或者其中一个是否足够?
答案 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