首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清除Python/matplotlib内存?

如何清除Python/matplotlib内存?
EN

Stack Overflow用户
提问于 2017-07-02 06:41:09
回答 3查看 5.6K关注 0票数 5

Python在用pyplot绘制几个图表之后(我在一台笔记本电脑上绘制了超过100万点的图形,以及在错误与点数有直接关系之前可以绘制多少图形),就会产生内存错误。

如何清除内存之后,以便我可以绘制更多的图形?现在唯一的选择是ctrl + .重新启动内核。

我尝试了以下建议:

代码语言:javascript
复制
matplotlib.pyplot.close("all")
matplotlib.pyplot.clf()

不能清除错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-19 07:26:03

几个星期以来,我一直在努力解决这个问题,唯一对我有效的是这里提出的解决方案:

如何彻底清除所有Matplotlib图形的内存

代码语言:javascript
复制
matplotlib.pyplot.figure().clear()
matplotlib.pyplot.close()

以下内容如下:

代码语言:javascript
复制
plt.cla()

代码语言:javascript
复制
plt.clf() 

一点也不适合我..。我怀疑是因为它是为你有多个子情节而设计的.

票数 3
EN

Stack Overflow用户

发布于 2017-07-02 06:44:58

假设您正在使用朱庇特笔记本,您只需在一个单元格中调用%reset即可。

票数 1
EN

Stack Overflow用户

发布于 2017-07-02 06:56:53

也许在最近的修订中已经解决了这个问题,但我仍然使用以下方法:

代码语言:javascript
复制
plt.close()
# http://matplotlib.org/users/pyplot_tutorial.html
# >>> WORKING WITH MULTIPLE FIGURES AND AXES
# is a must

琵琶教程解释道:

如果您正在制作大量的数字,您还需要注意一件事:在图形被.close()显式关闭之前,图形所需的内存还没有完全释放。仅删除对图形的所有引用和/或使用窗口管理器来关闭屏幕上显示图形的窗口是不够的,因为pyplot在调用.close()之前保持内部引用。

如果不处理,也会使整个python解释器崩溃。

这件事让人头疼。

代码语言:javascript
复制
# #####################################################################################
#
# 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
#
# ######################################################################################
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44868127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档