Seite 1 von 1

Pickle recursion limit

Verfasst: Donnerstag 3. Februar 2011, 13:52
von Gerenuk
Ich habe eine sehr große Liste von Objekten welche alle Referenzen auf andere Objekte haben. Also jedes Objekt hat Referenzen auf ein paar andere der Objekte. Nun wollte ich die Daten picklen, aber es kommt
f=open("test.pickle","wb")
p=pickle.Pickler(f)
p.dump(nodes)
>>> Fatal Python error: Cannot recover from stack overflow.

Kann ich das irgendwie steuern, damit Pickle es einfacher hat? Er soll also nicht schon beim ersten Objekt in alle Referenzen eintauchen. Oder gibt es eine andere Lösung? Die standard pickle Docu sagt mir irgendwie nicht viel :(

Re: Pickle recursion limit

Verfasst: Donnerstag 3. Februar 2011, 18:25
von lunar
@Gerenuk: Du musst entweder ".__getstate__()" so implementieren, dass überflüssige Referenzen nicht enthalten sind, oder die Referenzen vor dem pickeln manuell löschen.

Re: Pickle recursion limit

Verfasst: Donnerstag 3. Februar 2011, 18:48
von Gerenuk
Hmm, OK. Mittlerweile habe ich die Referenzen mit getstate durch IDs ersetzt. Ich hätte nur gedacht man könnte in die pickle recursion eingreifen. Aber scheinend nicht.
Trotzdem Danke für den Vorschlag.