Seite 1 von 1
Memoryerror nach append-Befehl
Verfasst: Freitag 5. Februar 2021, 09:24
von pywald
Hallo,
Ich habe eine Liste, die fünf Elemente beinhaltet.Diese will ich dann mit join zu einem String zusammensetzen.
Aber ich bekomme statt der fünf Elemente nur einen Memoryerror.
Danke im voraus
pywald
Re: Memoryerror nach append-Befehl
Verfasst: Freitag 5. Februar 2021, 09:26
von __deets__
Bitte liefere eine einfaches Programm, dass diese problem reproduzierbar macht für uns. Dann kann man sich das anschauen.
Re: Memoryerror nach append-Befehl
Verfasst: Freitag 5. Februar 2021, 09:43
von pywald
Habe dass Problem selber gelöst.
pywald
Re: Memoryerror nach append-Befehl
Verfasst: Freitag 5. Februar 2021, 10:42
von einfachTobi
Es wäre schön, wenn du deine Lösung hier postest, damit auch andere auf der Suche nach einer Lösung davon profitieren können. Selbst wenn es ein absoluter Anfängerfehler oder ein Vertipper oder Sonstwas war, kann es jemandem auf die Sprünge helfen.
Re: Memoryerror nach append-Befehl
Verfasst: Freitag 5. Februar 2021, 14:58
von DeaD_EyE
Wenn man z.B. eine Liste mit ganz vielen Strings hat und diese mit der join-Methode verknüpft, benötigt man den doppelten Speicher, da die einzelnen Strings weiterhin als Objekte im Speicher existieren, bis man die Referenz löscht und das Objekt durch den garbage collector gelöscht worden ist.
Kann man sogar selbst reproduzieren:
Der String wäre dann 64 GiB groß. Ich denke mal, dass niemand hier soviel RAM + SWAP hat.
Vorsicht, der Code kann sogar zum Absturz des gesamten Systems führen.
Wenn man lange genug wartet, bekommt man irgendwann einen memory error.
Ich konnte ihn leider nicht reproduzieren. Vor dem Testen am besten den Swap deaktivieren.
andre@andre-GP70-2PE:~$ ipython
Python 3.9.1 (default, Dec 18 2020, 11:19:32)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.20.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: a = "a" * 4 * 1024 ** 3
In [2]: a = "a" * 4 * 1024 ** 3
In [3]: a = "a" * 4 * 1024 ** 3
In [4]: a = "a" * 6 * 1024 ** 3
In [5]: a = "a" * 10 * 1024 ** 3
Getötet
Re: Memoryerror nach append-Befehl
Verfasst: Freitag 5. Februar 2021, 17:58
von einfachTobi
Das ist mir klar. Mir geht es da eher um das Prinzip eines Forums

Re: Memoryerror nach append-Befehl
Verfasst: Freitag 5. Februar 2021, 19:41
von pywald
einfachTobi hat geschrieben: Freitag 5. Februar 2021, 10:42
Es wäre schön, wenn du deine Lösung hier postest, damit auch andere auf der Suche nach einer Lösung davon profitieren können. Selbst wenn es ein absoluter Anfängerfehler oder ein Vertipper oder Sonstwas war, kann es jemandem auf die Sprünge helfen.
Ich habe eine Liste, während sie angezeigt wurde, bearbeitet (Anfängerfehler).
pywald