Hallo!
Ich habe ein Script geschrieben, welches bei einem einfachen Brettspiel alle Züge ausprobiert, und so eine strikt dominante Strategie findet(Spieltheorie)
Wenn ich das Script komplexer mache, bricht das Script einfach ab.
(Musste über sys setrecursionlimit erstmal die Rekursion vertiefen...)
Ich schätze, in der aktuellen Version sollte er ca.1h rechnen.
Kann mir irgendwer helfen?
Schonmal danke,
Michael
Script bricht Rekursion ab
Hallo und willkommen im Forum!
Sag' mal: Wie soll Dir jemand helfen, wenn Du uns keinerlei Informationen gibst wo das Problem liegen könnte? Schau' mal hier: http://www.python-forum.de/topic-1240.html als Info zum besseren Fragenstellen. Oder hier: http://www.lugbz.org/documents/smart-questions_de.html
Gruß,
Christian
Sag' mal: Wie soll Dir jemand helfen, wenn Du uns keinerlei Informationen gibst wo das Problem liegen könnte? Schau' mal hier: http://www.python-forum.de/topic-1240.html als Info zum besseren Fragenstellen. Oder hier: http://www.lugbz.org/documents/smart-questions_de.html
Gruß,
Christian
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Michael!miv hat geschrieben:Musste über sys setrecursionlimit erstmal die Rekursion vertiefen...[...]Kann mir irgendwer helfen?
Willkommen im Python-Forum!
``sys.setrecursionlimit`` hast du ja schon gefunden. Hast du ein Problem? Dann beschreibe es.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Das Rekursionslimit ist dazu da, dass der C-Stack nicht "überläuft". Man kann es hochsetzen, das hat aber keinen Einfluss auf den C-Stack. Wenn man das Limit also so hoch setzt, dass der C-Stack "überlaufen" kann, bricht das Programm dann einfach ab. Entweder mit einer Speicherzugriffsverletzung, oder weil der Stack irgend etwas im Datenbereich überschreibt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo BlackJack!BlackJack hat geschrieben:Das Rekursionslimit ist dazu da, dass der C-Stack nicht "überläuft". Man kann es hochsetzen, das hat aber keinen Einfluss auf den C-Stack.
Bitte werde etwas genauer. Das Rekursionslimit in Python ist 1000. Wie viel kann der C-Stack vertragen? Wie kriegt man das raus?
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Solange das Limit hochsetzen und Stack "verbrauchen" bis es kracht!?
Der Stack ist unter Linux normalerweise 8 MB gross.
Der Stack ist unter Linux normalerweise 8 MB gross.
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Wenn es Probleme mit dem Stack gibt, dann schmeißt man ihn raus
Mit StacklessPython ( http://www.stackless.com/ )
Also ich habe noch nie mit Stackless gearbeitet, aber genau diese Problematik und damit Vorteil von Stackless wird in dem Einsteiger Tutorial besprochen.
Mit StacklessPython ( http://www.stackless.com/ )
Also ich habe noch nie mit Stackless gearbeitet, aber genau diese Problematik und damit Vorteil von Stackless wird in dem Einsteiger Tutorial besprochen.
Das Problem ist ganz einfach erklärt:
Das Script hält einfach an.
Wenn ich denn Sys teil lösche, erhalte ich:
RuntimeError: maximum recursion depth exceeded
Aber wie gesagt, das habe ich dank Google schon gelöst
Ich arbreite mit DrPython, und da sehe ich rechts unten, wenn das Script läuft(zum Beispiel in einer Endlosschleife)
aber bei meinem Script tut sich nichst.
Es startet, probiert einige Strategien, und dann hört es auf, ohne fertig zu sein
Das Script hält einfach an.
Wenn ich denn Sys teil lösche, erhalte ich:
RuntimeError: maximum recursion depth exceeded
Aber wie gesagt, das habe ich dank Google schon gelöst
Ich arbreite mit DrPython, und da sehe ich rechts unten, wenn das Script läuft(zum Beispiel in einer Endlosschleife)
aber bei meinem Script tut sich nichst.
Es startet, probiert einige Strategien, und dann hört es auf, ohne fertig zu sein