Napsal jsem malou webapp pomocí rámce baňky, která zahrnuje vykreslování pomocí matplotlib. Problém je, že pokaždé, když jsem vytvořit děj, proces spotřebovává více paměti.
I nasadili aplikaci pomocí mod_wsgi s soubor .wsgi vypadající prostě takhle:
from yourapplication import app as application
Problémy začít, když jsem přístup k URL, který vytvoří graf. Funkce vytvoří objekt plotru, který při initilized, bere příslušná data z databáze sqlite3 (data se skládají z asi 30 čísel a stejně tak mnoho datetime objekty), vytvoří graf pomocí matplotlib a vrací objekt StringIO který se pak zobrazí na obrazovce ,
To je konec funkce. Celá třída je možné vidět zde
canvas = FigureCanvas(fig)
png_output = StringIO.StringIO()
canvas.print_png(png_output)
return png_output.getvalue()
Když jsem navštívit stránky, proces je vytvořen s asi 25 MB vyhrazené paměti. Poprvé, když jsem vytvořit graf dorůstá do 30 MB a potom se asi 1 MB pro každé době jsem použít třídu plotru. Výchozí nastavení bylo použito 5 postup, který spotřebovaný příliš mnoho paměti (byl až 150MB během několika minut a já povoleno pouze 80MB).
Jsem velmi nové pro všechny, co tu zapojených (webových frameworků, Apache, databáze), takže nemám žádný pocit, že se všechno mohlo být špatně, takže nějaké nápady jsou vysoce ceněn. Dík!