我创建了一个相当不错的可视化程序,使用 Qt 作为界面层和 matplotlib 来绘制大部分内容。我使用轮廓和计数以及文本和线条,并且在释放对象时从未遇到问题。
一旦我开始调用 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 clear 只会将引用计数减少到 2。 Quiver 绘制了我想要的图像,但我完全没有想法。
我的代码比这复杂得多。我已经尝试完全替换轴对象,但这没有帮助。我真的不能随意更换 Figure 实例。