Heute lief ich gegen die Tatsache, dass sys.exit()
von einem Kind-Thread aufgerufen nicht den Hauptprozess zu töten. Ich wusste das vorher nicht, und das ist okay, aber ich brauchte lange Zeit, um dies zu erkennen. Es hätte viel viel Zeit gespart, wenn sys.exit(msg)
msg
bis stderr
gedruckt hätte. Aber es tat es nicht.Python: Warum ruft `sys.exit (msg)` von einem Thread nicht `msg` an stderr?
Es stellte sich heraus, dass es kein richtiger Fehler in meiner Anwendung war; es rief sys.exit(msg)
mit einem bedeutungsvollen Fehler in einer volitionalen Weise an - aber ich konnte es einfach nicht sehen.
In the docs for sys.exit()
it is stated:
für einen Anruf von einem Kind-Thread, Dies ist nicht wahr „[...] ein anderes Objekt zu sys.stderr
und führt zu einem Beendigungscode 1 wird gedruckt“ wo sys.exit()
verhält sich offenbar als thread.exit()
: „um die Systemexit Ausnahme auslösen, wenn nicht gefangen, führt dies zu dem Faden leise zu verlassen.“
Ich denke, wenn ein Programmierer sys.exit(msg)
eine Fehlermeldung ausgeben möchte, sollte dies nur gedruckt werden - unabhängig von dem Ort, aus dem es aufgerufen wird. Warum nicht? Ich sehe derzeit keinen Grund. Zumindest sollte ein Hinweis in der Dokumentation für sys.exit()
sein, dass die Nachricht nicht aus Threads gedruckt wird.
Was denkst du? Warum werden Fehlermeldungen von Threads verborgen? Macht das Sinn?
Mit freundlichen Grüßen,
Jan-Philip Gehrcke
Sie gaben mir einen guten Rat, wieder;) Btw: Es ist so toll, dass Sie Ihr Wissen hier teilen. Ich sehe, dass du momentan viel Zeit damit verbringst, diese Plattform mit reinem Experten-Python-Zeug zu füllen!Das braucht die Gemeinschaft, aber das ist keine Selbstverständlichkeit. Ein sehr, sehr großes Dankeschön dafür! Jan-Philip –
@ Jan-Philip, Sie sind herzlich willkommen, und, vielen Dank für die Anerkennung, es ist immer toll zu hören, dass ich Hilfe bin! –