wizard.Destroy() hängt Programm auf
Verfasst: Donnerstag 9. August 2012, 13:59
Hallo Zusammen,
ich stehe derzeit vor einem größeren Problem. Und zwar bin ich seit 3 Tagen auf der Suche nach der Ursache gewesen. Jetzt meine ich die Ursache gefunden zu haben, es scheint der Aufruf von wizard.Destroy() zu sein.
Zum Programm:
Mein Programm unterstützt das mehrere Prozesse gestartet werden, dabei wird ein multiprocessing.Pool erstellt und Tasks auf diesen Pool aufgeteilt. Um ein funktionierendes Logging zu erreichen, habe ich mich dazu entschieden eine Manager.Queue() zwischen MainProzess und den ChildProzessen zu erstellen, auf welche die childs schreiben können und der Main Prozess die logs lesen und verarbeiten kann.
Dazu läuft auf dem MainProzess ein QueueListener-Thread, welcher ununterbrochen auf neue Botschaften abfragt.
Zum Problem:
Das Problem ereignet sich wie folgt: Wenn ich während der Laufzeit mein Wizard aufgerufen habe und danach mein Programm schließen will, hängt sich der MainProzess bei wizard.Destroy() auf. (Ohne Traceback oder sonstiges)
Wenn kein Wizard während der Laufzeit geöffnet wurde, beendet sich das Programm und alle unterprozesse, wie gewünscht.
Was kann zu diesem Problem führen? Ich habe an der Terminierung und Erstellung des Wizards seit der Umstellung auf multiprocessing keine größeren Veränderungen vorgenommen - dennoch war es früher möglich das Programm auch nach Aufruf des Wizards ordnungsgemäß zu beenden.
Desweiteren habe ich die benutzten Aufrufe in einem Testmodul ausprobiert, hier ließ sich alles schließen/öffnen.
Ich bin über jeden Ratschlag sehr dankbar!
ich stehe derzeit vor einem größeren Problem. Und zwar bin ich seit 3 Tagen auf der Suche nach der Ursache gewesen. Jetzt meine ich die Ursache gefunden zu haben, es scheint der Aufruf von wizard.Destroy() zu sein.
Zum Programm:
Mein Programm unterstützt das mehrere Prozesse gestartet werden, dabei wird ein multiprocessing.Pool erstellt und Tasks auf diesen Pool aufgeteilt. Um ein funktionierendes Logging zu erreichen, habe ich mich dazu entschieden eine Manager.Queue() zwischen MainProzess und den ChildProzessen zu erstellen, auf welche die childs schreiben können und der Main Prozess die logs lesen und verarbeiten kann.
Dazu läuft auf dem MainProzess ein QueueListener-Thread, welcher ununterbrochen auf neue Botschaften abfragt.
Zum Problem:
Das Problem ereignet sich wie folgt: Wenn ich während der Laufzeit mein Wizard aufgerufen habe und danach mein Programm schließen will, hängt sich der MainProzess bei wizard.Destroy() auf. (Ohne Traceback oder sonstiges)
Wenn kein Wizard während der Laufzeit geöffnet wurde, beendet sich das Programm und alle unterprozesse, wie gewünscht.
Was kann zu diesem Problem führen? Ich habe an der Terminierung und Erstellung des Wizards seit der Umstellung auf multiprocessing keine größeren Veränderungen vorgenommen - dennoch war es früher möglich das Programm auch nach Aufruf des Wizards ordnungsgemäß zu beenden.
Desweiteren habe ich die benutzten Aufrufe in einem Testmodul ausprobiert, hier ließ sich alles schließen/öffnen.
Ich bin über jeden Ratschlag sehr dankbar!