2016-02-18 4 views
5

Ich arbeite manchmal mit sehr großen Datensätzen in IPython Notebooks. Manchmal benötigt ein einzelner Pandas DataFrame 1 + GB Speicher, so dass ich es mir nicht leisten kann, viele Kopien zu behalten.Freigeben von Speicher bei Fehlern in IPython Notebook

Was ich gefunden habe ist, dass, wenn ich versuche, eine Operation auf einer solchen Matrix durchzuführen, und ein Fehler ausgelöst wird, bekomme ich den Speicher nicht zurück - einige intermittierende Variable wird immer noch irgendwo verfolgt. Das Problem ist, ich weiß nicht wo und kann es nicht frei machen!

Zum Beispiel zeigt das Bild unten den Speicherverbrauch nach wiederholten Versuchen, die Zelle auszuführen (jeder Schritt im Diagramm entspricht einem Versuch, die Zelle auszuführen). Jedes Mal, wenn ein neuer Speicherblock belegt wird, wird dieser nie freigegeben.

Memory usage while executing a cell that raises an error

Weiß jemand, wo dieser Speicher wird und wie sie befreien? Alternativ, wenn dies ein Fehler ist (d. H. Speicherverlust oder ähnliches), wie zeigst du das? Ich wollte das nicht als Fehler melden, wenn es sich tatsächlich um den Nebeneffekt handelt, dass der Code wie vorgesehen funktioniert (z. B. IPython cacht Dinge und ich missbrauche nur das Caching-System).

Vielen Dank!

+0

Ich habe ein ähnliches Problem mit Jupyter verbrauchen viel zu viel RAM. Ich habe die genaue Ursache des Problems noch nicht identifiziert, aber Jupyter bleibt tagelang auf dem Server und Notebooks werden häufig geöffnet und geschlossen. Ich bin auf dieses https://github.com/ipython/ipython/issues/8267 Problem gestoßen und dachte, dass es irgendwie verbunden sein könnte. Die vorgeschlagene Lösung (Update 'jsonschema') hat mir nicht geholfen, aber könnte für Sie arbeiten –

+0

Vielen Dank @Pocin für den Link. Ein weiteres Problem wurde beim Jupyter-Projekt angesprochen: https://github.com/jupyter/notebook/issues/642. Vielleicht können Sie dort einen Kommentar mit Ihrer Erfahrung hinzufügen, um den Entwicklern zu helfen, mehr Informationen über die Angelegenheit zu erhalten. –

+0

Auf welcher Plattform arbeiten Sie und was wird zur Speicherüberwachung verwendet? Versuche ähnliche Probleme aufzuspüren. – dartdog

Antwort

2

Pro Diskussion auf github betreffend issue 642, gibt es ein bekanntes Speicherleck in jsonschema 2.4. Nach dem Update auf jsonschema 2.5.1 habe ich dieses Problem nicht mehr.

Wenn Sie also ein älteres Framework verwenden und dieses Problem auftritt, müssen Sie mindestens jsonschema aktualisieren.