Como liberar memória depois de criar figuras matplotlib
Tenho várias funções matlpotlib acumuladas em algumas tarefas do django-aip
Toda vez que as tarefas são chamadas de mais RAM, é dedicado ao python. Em pouco tempo, o python está ocupando toda a RAM.
QUESTÃO Como liberar esta memória?
UPDATE 2 - Uma segunda solução:
Fiz uma pergunta semelhante especificamente sobre a memória bloqueada quando erros do matplotlib, mas recebi uma boa resposta para esta pergunta.clf()
, .close()
egc.collect()
não são necessários se você usar o multiprocesso para executar a função de plotagem em um processo separado cuja memória será liberada automaticamente assim que o processo termina
s erros do @Matplotlib resultam em um vazamento de memória. Como posso liberar essa memória?
UPDATE - A solução:
Essas postagens de stackoverflow sugeriram que eu possa liberar a memória usada pelos objetos matplotlib com os seguintes comandos:
.clf()
: Matplotlib fica sem memória ao plotar em um loop
.close()
: Python matplotlib: a memória não está sendo liberada ao especificar o tamanho da figura
import gc
gc.collect()
qui está o exemplo que usei para testar a soluçã
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from pylab import import figure, savefig
import numpy as np
import gc
a = np.arange(1000000)
b = np.random.randn(1000000)
fig = plt.figure(num=1, dpi=100, facecolor='w', edgecolor='w')
fig.set_size_inches(10,7)
ax = fig.add_subplot(111)
ax.plot(a, b)
fig.clf()
plt.close()
del a, b
gc.collect()