Создайте цифру, подсчитанную по ссылке
Кажется, что стандартный способ создания фигуры в matplotlib не ведет себя так, как я ожидал бы в python: по умолчанию вызов fig = matplotlib.figure()
в цикле будет удерживаться на всех созданных фигурах и в конечном итоге заканчиваться Память.
a href= "< a 1 > " > a несколько, которые касаются обходных путей, но требующие явных вызовов matplotlib.pyplot.close(fig)
кажутся немного хакерскими. Я бы хотел, чтобы простой способ сделать ссылку fig
подсчитана, поэтому мне не придется беспокоиться о утечке памяти. Есть ли способ сделать это?
Ответы
Ответ 1
Если вы создаете фигуру без использования plt.figure
, тогда она должна быть подсчитана по мере того, как вы ожидаете. Например (это также использует неинтерактивный сервер Agg).
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
# The pylab figure manager will be bypassed in this instance.
# This means that `fig` will be garbage collected as you'd expect.
fig = Figure()
canvas = FigureCanvas(fig)
ax = fig.add_subplot(111)
Ответ 2
Если вы собираетесь копировать цифры, а не показывать их, вы можете использовать:
def savefig(*args, **kwargs):
plt.savefig(*args, **kwargs)
plt.close(plt.gcf())
Это, возможно, не менее хаки, но что угодно.