在Python(Matplotlib)中重用模块引用

在Python(Matplotlib)中重用模块引用,python,matplotlib,Python,Matplotlib,我想我可能误解了一些事情。。。但事情是这样的 我在循环中使用matplotlib中的psd方法,我没有让它绘制任何东西,我只是想要数值结果,所以: import pylab as pyl ... psdResults = pyl.psd(inputData, NFFT=512, Fs=sampleRate, window=blackman) 但每次我运行它所在的函数时,它都会循环36次 随着时间的推移,当我运行我的程序时,我的内存泄漏速度很慢,因此使用“heapy”来监视它,每次我运行该函数时

我想我可能误解了一些事情。。。但事情是这样的

我在循环中使用matplotlib中的psd方法,我没有让它绘制任何东西,我只是想要数值结果,所以:

import pylab as pyl
...
psdResults = pyl.psd(inputData, NFFT=512, Fs=sampleRate, window=blackman)
但每次我运行它所在的函数时,它都会循环36次

随着时间的推移,当我运行我的程序时,我的内存泄漏速度很慢,因此使用“heapy”来监视它,每次我运行该函数时,它会在这3个堆中添加36个:

dict matplotlib.line.Line26
dict matplotlib.transforms.CompositeAffine2D
dict matplotlib.path.Path
我只能得出结论,每次我使用psd方法时,它只是将它添加到某个字典的某个地方,而我希望有效地擦除内存,即重置每个循环的pylab,这样它就不会存储任何内容

我可能误解了heapy,但很明显pylab只是在增加每个循环,尽管我只想使用它的psd方法,但我不希望它将结果保存在任何地方

干杯

试试这个:

from matplotlib import mlab
psdResults = mlab.psd(inputData, NFFT=512, Fs=sampleRate, window=blackman)

这能改善情况吗?

很好,是的,它有。。。这也突出了导入类型的差异。非常感谢!现在要修复其他内存泄漏。。!事实上,所有的问题都解决了。太棒了,哇,太棒了!如果使用ipython,命令
pylab.psd???
将显示源代码。从那里,我追踪
psd
回到
Axes
,然后追踪
mlab
。这就是ipython内省如何帮助确定到底发生了什么。