2

我创建了一个相当不错的可视化程序,使用 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 实例。

4

0 回答 0