Was tun wenn der Heap platzt!

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.
Data
User
Beiträge: 14
Registriert: Freitag 20. Juni 2003, 19:40
Kontaktdaten:

Was tun wenn der Heap platzt!

Beitragvon Data » Samstag 19. Juli 2003, 15:19

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
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Samstag 19. Juli 2003, 17:58

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.
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Samstag 19. Juli 2003, 19:41

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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]