Python 释放Spyder IDE中的matplotlib内存

Python 释放Spyder IDE中的matplotlib内存,python,matplotlib,spyder,Python,Matplotlib,Spyder,如果我运行以下代码 import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import scipy.misc import gc def plot(i): lena = scipy.misc.lena() fig = plt.figure(frameon=False,figsize=(2.,2.),dpi=256) ax = fig.add_axes([0, 0, 1, 1]) ax.ax

如果我运行以下代码

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import scipy.misc
import gc

def plot(i):
  lena = scipy.misc.lena()
  fig = plt.figure(frameon=False,figsize=(2.,2.),dpi=256)
  ax = fig.add_axes([0, 0, 1, 1])
  ax.axis('off')
  ax.imshow(lena, cmap=plt.cm.gray)
  filename = '/tmp/test_{:03d}.png'.format(i)
  with open(filename, 'w') as outfile:
    fig.canvas.print_png(outfile)
  plt.close(fig)
  del fig
  gc.collect()

for i in range(100):
  plot(i)
  print(i)
在Spyder(gentoo linux上的2.3.5.2版,python 2.7.10,IPython 3.2.1)中,我看到内存随着迭代次数I线性增加,直到最终耗尽内存。“在Spyder中运行”是指标记文本并按F9键。但是,如果在分离的IPython终端中运行它,内存消耗保持不变


在使用matplotlib封装之后,是否有办法强制释放Spyder中的内存,特别是当输出进入文件而不是Spyder内部IPython终端时?

我在绘制1000个绘图时遇到类似问题。 在关闭绘图之前,我使用了命令plt.show()。然后我使用plt.close()和垃圾收集等。。。 这大大减少了内存泄漏。
虽然我不知道确切的原因,但我找到了plt.show()来处理内存问题

(此处为Spyder dev)如果在IPython qtconsole中而不是在普通终端中运行此代码,会发生什么?您是否看到相同的内存增加?不,当我使用IPython QT控制台时,内存没有增加。我注意到的一个区别是Spyder进程在我的进程列表中显示为“-u”选项,而IPython则没有。另外请注意,如果我在python或IPython终端中使用Spyder运行代码,或者使用F9或F5运行代码,则没有区别。使用Spyder 2.3.8、IPython 4.0.1和matplotlib 1.5再次测试。问题依然存在。我从未说过它已修复:-)