Comment puis-je libérer de la mémoire après la création de matplotlib chiffres

J'ai plusieurs matlpotlib fonctions roulé dans certains django-céleri tâches.

Chaque fois que les tâches sont appelés de plus de RAM est consacré à python. Avant trop longtemps, le python est de prendre de la RAM.

QUESTION: Comment puis-je libérer cette mémoire?

Mise à JOUR 2 - UNE Deuxième Solution:

J'ai posé une question similaire, précisément à propos de la mémoire verrouillée lorsque matplotlib erreurs, mais j'ai eu une bonne réponse à cette question .clf(), .close(), et gc.collect() ne sont pas nécessaires si vous utilisez multi process pour exécuter la fonction de traçage dans un processus distinct, dont la mémoire sera automatiquement libéré une fois que le processus se termine.

Matplotlib erreurs suite à une fuite de mémoire. Comment puis-je libérer de la mémoire?

Mise à JOUR - La Solution:

Ces stackoverflow postes a suggéré que je peux libérer la mémoire utilisée par matplotlib objets avec les commandes suivantes:

.clf(): Matplotlib est à court de mémoire lors de la représentation dans une boucle

.close(): Python matplotlib: la mémoire n'est pas libérée lors de la spécification de la figure de la taille

import gc
gc.collect()

Voici l'exemple que j'ai utilisé pour tester la solution:

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()
  • Merci. gc.collect() fonctionne pour moi
InformationsquelleAutor sequoia | 2011-08-18