Ich habe gerade Probleme, meine Qt App nach einem Event / Signal ordnungsgemäß zu terminieren.
sys.exit() ist scheinbar eine Lösung, jedoch vermute ich, dass der Aufruf wenig ratsam ist.
Ich nehme an, es werden von Python weder Referenzen noch andere Bereiche im Arbeitsspeicher wieder freigegeben.
Was passiert mit dem reservierten Arbeitsspeicher ? Vergibt das Betriebssystem diesen neu oder sind die Adressräume
für eine Zeit belegt ?
sys.exit()
Du kannst beruhigt sys.exit aufrufen. Ob & was das Betriebssystem macht, ist alleine Sache des OS. Kannst du eh nicht kontrollieren. So sind gebundene Ports gelegentlich fuer eine Weile blockiert, ande Resourcen aber sofort wieder frei.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Das OS weiss, welche Ressourcen ein Prozess nutzt und kann deshalb aufraeumen, wenn es den Prozess nicht mehr gibt. Wie deeds schon sagte: Auf das wie & wann hast du so oder so keine Auswirkung.
Wenn du in einem Prozess sagst `socket.close` machst du nichts anderes als dem OS mitzuteilen, dass du den Socket nicht mehr brauchst, damit schliesst du ihn nicht.
Wenn du in einem Prozess sagst `socket.close` machst du nichts anderes als dem OS mitzuteilen, dass du den Socket nicht mehr brauchst, damit schliesst du ihn nicht.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@webskipper: Aus einer von Qt aus aufgerufenen Methode kannst Du "sys.exit()" nicht nutzen, da Ausnahmen die Qt-Ereignisschleife nicht passieren. Du musst "QApplication.instance().quit()" nutzen.