我创建了一个很好的可视化程序,使用Qt作为界面层和matplotlib来绘制大部分内容。我使用轮廓和countourf以及文本和线条,并且永远不会遇到释放对象的问题。
一旦我开始调用Axes.quiver,我就会泄漏。凭借数据集的大小,它可以快速累加。以下代码演示了此问题:
from pylab import *
from numpy import ma
import time
X,Y = meshgrid( arange(0,2*pi,.04),arange(0,2*pi,.04) )
U = cos(X)
V = sin(Y)
fig = figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
for i in range(90):
Q = ax.quiver( U, V)
time.sleep(0.2)
Q.remove()
我知道这个简单的片段不会绘制到屏幕上(泄漏变得更糟)。
Q的sys.getrefcount为4,所以我无能为力似乎摆脱它。调用fig和ax清除只会将引用数量减少到2. Quiver绘制我想要的图像,但我完全没有想法。
我的代码比这复杂得多。我试过完全替换轴对象,但这没有帮助。我真的无法自由替换Figure实例。