ich habe ein Rekursionsproblem da angeblich die maximal Rekursionstiefe erreicht wurde.
Fehlermeldung: "maximum recursion depth exceeded"
Dachte, ah ok hast halt einen Denkfehler eingebaut.
Aber nach etwas suchen ist mir in meinem Code nichts aufgefallen und so habe ich mit einer "statischen " Variablen (ja die gibts nicht) einfach mal Methodenaufrufe mitgezählt.
Angeblich ist bei 10 Aufrufen Schluss, ok dacht ich mir. Das kann nicht sein, Standard ist ja meistens 2000.
googel googel.
Default Rekursionstiefe bei 1000. Also gehe ich davon aus, er erkennt frühzeitig das es "endlos" ist.sys.getrecursionlimit(), setrecursionlimit(limit)
Mit diesen Funktionen kann die maximale Rekursionstiefe ausgelesen oder verändert werden. Die maximale Rekursionstiefe ist mit 1000 vorbelegt und bricht endlos rekursive Funktionsaufrufe ab, bevor diese zu einem Speicherüberlauf führen können.
Da wollt ich fragen wie er das erkennt?
Grüße
anbei der code, falls interessant
Code: Alles auswählen
def build(self):
try:
self.htmlDoc = HTML("<html><head></head><body></body></html>")
self.__recursiveListHandling([], self.orderFields, self.whereFields)
print self.htmlDoc
except Exception, e:
print e
pass
#===========================================================================
def __recursiveListHandling(self,usedList,toUseList, whereFields):
try:
if len(toUseList) > 0:
....
for result in fieldList:
....
self.__recursiveListHandling(copy.deepcopy(usedList),
copy.deepcopy(copyToUseList),
copy.deepcopy(copyWhereFields))
else:
....
self.__writeTicketBlock(ticket[0])
pass
except Exception, e:
...
def __writeTicketBlock(self,ticketId):
for i in range(0,6)):
try:
...
self.htmlDoc = self.htmlDoc | Transformer('.//body').append("   %s \n"%sqlResult[0][i])
...
except Exception, e:
print e
break
pass