Я создаю много графиков, которые сохраняются с помощью pylab.savefig, и наблюдаю, что процесс Python заканчивается сотнями файловых дескрипторов для C: \ Python27 \ Lib \ site-packages \ matplotlib \ mpl-data \ fonts \ ttf \ Vera.TTF.В конечном итоге это приводит к сбою процесса из-за слишком большого количества файловых дескрипторов (в этот момент Vera.ttf имеет более 700 дескрипторов, просматриваемых через «Process Explorer»).
В архивах я вижу несколько ссылок на старые утечки в matplotlibно, насколько я могу судить, они должны были быть разрешены в версии 1.0.1.
В моем коде я неоднократно вызываю pylab.close ("all"), а также pylab.close (figure_variable) и figure_variable.clear () пытается получить matplotlib для освобождения ресурсов.
Для справки, я использую последнюю версию дистрибутива Enthought для 64-битной Windows.Я могу продублировать проблему следующим образом:
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, фактически создается несколько дескрипторов на график.