Seite 1 von 1

Was tun wenn der Heap platzt!

Verfasst: Samstag 19. Juli 2003, 15:19
von Data
Hallo,

eine Methode in meiner Klasse enthält eine untergeordnete rekursive Funktion. Diese tut es für kleine Instanzen der Klasse wunderbar und ist vor allem elegant. Enthalten die Instanzen aber viele Subelemente, bekomm ich von der virtuellen Maschine die folgende Fehlermeldung:
"maximum recursion depth exceeded".
Wahrscheinlich heißt das auf pythonisch, dass in meinem Heap kein Platz mehr ist. Die Frage ist, was ich da tun kann. Die Entrekursivierung meiner Funktion ist zum einen schwierig und führt zum anderen zu einem häßlichen Konstrukt. Gibt es eine Möglichkeit an einen ausreichend großen Heap zu kommen, oder soll ich doch entrekurisvieren?

Data

Verfasst: Samstag 19. Juli 2003, 17:58
von Milan
hi, mit sys.setrecursionlimit kannst du die maximale Rekursionstiefe hochschrauben, ist aber riskant. Der Standart ist auf 1000 gesetzt, aber viel Rekursion kann recht Speicher lastig sein und zu abstürzen führen... Ich würde dir eher zur Entrekursivierung raten.

Verfasst: Samstag 19. Juli 2003, 19:41
von Dookie
Hi Data,

wenn die Subelemente in Listen oder Dictionaries angeordnet sind, dann durchlaufe diese mit einer "normalen" schleife, und verwende die Rekursion nur, wenn eine Ebene weiter hinabgestiegen wird.


Gruß

Dookie