我希望您能告诉我在绘制完图形后释放内存的正确方法,因为当我在一个循环中绘制多个图像时,会出现“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()
在这个答案中的评论指出,正确的语法实际上是
plt.close(fig)
,但最高票的答案在这里给出说plt.clf()
已经足够,并没有提到.close
。问题是:在图表保存到文件后,什么是正确的命令来释放内存?我需要用
.clf
和.close
两个命令还是其中一个就足够了?
imshow
会怎样?set_data
调用有什么作用? - Gabrielplt.imshow
只是一个猜测。在这种情况下,set_data
将更新AxesImage
对象的新数据,而不是创建一个新的图像对象,这似乎会给你带来内存问题。 - wimimshow
,但不是唯一的选择。我还使用plt.plot()
和plt.scatter()
,所以我不确定如何将其应用于这些情况,我会更新问题以使其更清晰明了。 - Gabrielplot
和scatter
返回的引用,它们也有set_data
方法,当迭代时可以使用。 - wim