matplotlib, figure, savefig und memory leaks
Verfasst: Dienstag 18. August 2009, 15:10
Hallo zusammen,
ich hab' ein kleines Problem mit der matplotlib.
Folgender Code verbraucht bei mir in jedem Schleifendurchlauf zusätzlich Speicher
Folgender Code erzeugt kein Memory Leak:
Allerdings kommt die Fehlermeldung das Attribut Canvas von pic sei None. Im Original:
Achja, "del" oder den garbage-Collector hab' ich auch schon ausprobiert, das hat mir nicht geholfen.
Viele Grüße und vielen Dank
ich hab' ein kleines Problem mit der matplotlib.
Folgender Code verbraucht bei mir in jedem Schleifendurchlauf zusätzlich Speicher
Code: Alles auswählen
import numpy as np
import matplotlib.pyplot as plt
##erzeuge Nonsens-Daten
matrix = np.random.rand(10,10)
for i in range(10000):
pic = plt.figure(1)
ax = pic.add_subplot(111)
ax.imshow(matrix)
plt.savefig('test.png')
plt.close(pic)
Code: Alles auswählen
matrix = np.random.rand(10,10)
for i in range(10000):
picture = figure.Figure()
picture.add_subplot(111)
picture.gca().imshow(matrix)
picture.savefig('D:\\temp\\test.png')
picture.clf()
Weiss jemand von Euch Rat? Ich habe mich bereitst durch alle möglichen und unmöglichen Mailinglisten gelesen. Angeblich hat die Matplotlib selber keine Memory leaks, aber je nachdem wie man sie einbaut (insbesondere auch mit pylab) kann es sein, dass einige Dinge sehr lange im Speicher gehalten werden.File "c:\python25\lib\site-packages\matplotlib-0.98.5.2n1-py2.5-win32.egg\matplotlib\figure.py", line 990, in savefig
self.canvas.print_figure(*args, **kwargs)
AttributeError: 'NoneType' object has no attribute 'print_figure'
Achja, "del" oder den garbage-Collector hab' ich auch schon ausprobiert, das hat mir nicht geholfen.
Viele Grüße und vielen Dank