¿Cómo puedo liberar memoria después de crear figuras matplotlib
Tengo varias funciones matlpotlib incluidas en algunas tareas de django-apio.
Cada vez que las tareas se llaman más RAM se dedica a Python. En poco tiempo, Python está ocupando toda la RAM.
PREGUNTA ¿Cómo puedo liberar esta memoria?
UPDATE 2 - Una segunda solución:
Hice una pregunta similar específicamente sobre la memoria bloqueada cuando matplotlib errores, pero obtuve una buena respuesta a esta pregunta.clf()
, .close()
ygc.collect()
no son necesarios si utiliza multiproceso para ejecutar la función de trazado en un proceso separado cuya memoria se liberará automáticamente una vez que finalice el proceso.
os errores de @Matplotlib provocan una pérdida de memoria. ¿Cómo puedo liberar esa memoria?
UPDATE - La solución:
stas publicaciones de stackoverflow sugirieron que puedo liberar la memoria utilizada por los objetos matplotlib con los siguientes comandos:
.clf()
: Matplotlib se queda sin memoria al trazar en un bucle
.close()
: Python matplotlib: la memoria no se libera al especificar el tamaño de la figura
import gc
gc.collect()
Aquí está el ejemplo que usé para probar la solución:
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()