在用pyplot绘制几张图之后,Python发现了一个内存错误(我在笔记本上绘制了超过一百万个点的图 - 并且在错误与点数有直接关系之前可以绘制多少个图)。如何清除Python/matplotlib内存?
内存如何被清除后,以便我可以绘制更多的图表?现在唯一的选择是ctrl + .
重新启动内核。
我已经试过推荐:
matplotlib.pyplot.close("all")
matplotlib.pyplot.clf()
不会清除错误。
在用pyplot绘制几张图之后,Python发现了一个内存错误(我在笔记本上绘制了超过一百万个点的图 - 并且在错误与点数有直接关系之前可以绘制多少个图)。如何清除Python/matplotlib内存?
内存如何被清除后,以便我可以绘制更多的图表?现在唯一的选择是ctrl + .
重新启动内核。
我已经试过推荐:
matplotlib.pyplot.close("all")
matplotlib.pyplot.clf()
不会清除错误。
假设您正在使用Jupyter笔记本,您可以在单元格中调用%reset
。
也许这已被固定在最近的版本,但我还是用这样的:
plt.close()
# http://matplotlib.org/users/pyplot_tutorial.html
# >>> WORKING WITH MULTIPLE FIGURES AND AXES
# is a must
的pyplot tutorial解释:
如果您做大量的数据,你需要知道还有一件事:一个人物所需要的内存在
.close()
明确关闭之前并未完全释放。
删除对图中所有引用和/或使用的窗口管理器杀死其中的身影出现在屏幕上的窗口,是远远不够的,因为pyplot
保持内部参考直到.close()
被调用。
如果没有处理,也可以崩溃python
解释作为一个整体
有很多头疼的与此有关。
# #####################################################################################
#
# AFTER SOME 50 calls, matplotlib crashed first, after a few more, python was killed too
#
# ###################################################################################### >>> http://stackoverflow.com/questions/32318643/how-to-properly-delete-a-matplotlib-figure-embedded-in-a-child-window-in-pyside
#
# Traceback (most recent call last):
# File "C:\Python27.anaconda\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 91, in paintEvent
# stringBuffer = self.renderer._renderer.tostring_bgra()
# MemoryError
# Traceback (most recent call last):
# File "C:\Python27.anaconda\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 91, in paintEvent
# stringBuffer = self.renderer._renderer.tostring_bgra()
# MemoryError
# Traceback (most recent call last):
# File "C:\Python27.anaconda\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 91, in paintEvent
# stringBuffer = self.renderer._renderer.tostring_bgra()
# MemoryError
# Traceback (most recent call last):
# File "C:\Python27.anaconda\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 91, in paintEvent
# stringBuffer = self.renderer._renderer.tostring_bgra()
# MemoryError
#
# ######################################################################################
提问者已经尝试使用'matplotlib.pyplot.close(“all”)'。你的答案在多大程度上提供了新的解决方案? – ImportanceOfBeingErnest
我正试图让这个答案对每个人都有用。这里没有涉及任何侵害。我也没有删除任何内容,但是根据格式准则进行了制作。用'>'引用需要明确引用来自哪里(链接到其他内容),否则它应该是纯文本。标题旨在用作部分的标题,而不是使普通内容更大。我仍然不清楚,这个答案为帮助提问者增加了什么,所以你可能想更好地解释一下,你认为'plt.close()'与'plt.close(“all”)' 。 – ImportanceOfBeingErnest
user3666197:我已向主持人报告了您的评论。我们已经谈了很多这样的话:请愿意接受对您工作的合理修改。 @Importance提到的报价问题出现了很多。如果材料来自其他地方,并且您引用了来源,那么这是一个引用。报价块不是通用荧光笔设备。 – halfer
标准acer笔记本电脑。 – Tony
Tony,Jupyter Notebook是一款软件(许多Python IDE中的一种),而不是硬件。 – user3666197
user3666197我正在使用Spyder。 – Tony