Pickle recursion limit

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

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 :(
lunar

@Gerenuk: Du musst entweder ".__getstate__()" so implementieren, dass überflüssige Referenzen nicht enthalten sind, oder die Referenzen vor dem pickeln manuell löschen.
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

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.
Antworten