有没有人看到matplotlib在Windows 7版本1.0.1上泄漏文件句柄(Vera.ttf)?

时间:2011-05-17 17:05:50

标签: matplotlib

我创建了许多使用pylab.savefig保存的图,并观察到Python进程最终为C:\ Python27 \ Lib \ site-packages \ matplotlib \ mpl-data \ fonts \ ttf \ Vera提供了数百个文件句柄。 TTF。最终由于文件句柄太多而导致进程崩溃(此时通过“Process Explorer”查看Vera.ttf的句柄超过700个。)

我在档案中看到几个对matplotlib中旧泄漏的引用,但据我所知,它们应该由版本1.0.1解析。

在我的代码中,我反复调用pylab.close(“all”)以及pylab.close(figure_variable)和figure_variable.clear(),试图让matplotlib释放资源。

作为参考,我正在使用64位Windows的最新版本的Enthought python发行版。我可以通过以下方式复制问题:

for i in range(1000):
    fig = pylab.figure()
    pylab.plot(some_data)
    fig.savefig(filename)
    fig.clear()
    pylab.close(fig)
    if i % 10 == 1: pylab.close("all")

有人知道如何让matplotlib释放Vera.ttf上的句柄或避免重复加载同一个文件多次?根据我在Process Explorer中观察到的,它实际上是为每个绘图创建多个句柄。

1 个答案:

答案 0 :(得分:2)

有几个待处理的拉取请求可以解决这个问题,其中一个将进入Matplotlib v1.1.1(下一个稳定版本):请参阅#795#798两个替代方案,并参与#791,这是v1.1.1发布候选测试的主题。

#795中提出的修复程序在7个月前应用于git master分支,所以如果你在那,你不应该再看到这个问题了。唯一需要注意的是它使用了with语句,所以不适用于Python< 2.6