Dzisiaj uciekłem przed faktem, że sys.exit()
wywołane z wątku potomnego nie zabija głównego procesu. Nie wiedziałem o tym wcześniej i jest to w porządku, ale potrzebowałem dużo czasu, aby to zrozumieć. Zaoszczędziłoby to przez wiele czasu, gdyby sys.exit(msg)
wydrukowałoby msg
na stderr
. Ale tak się nie stało.Python: Dlaczego `sys.exit (msg)` wywołane z wątku nie drukuje `msg` na stderr?
Okazało się, że nie był to prawdziwy błąd w mojej aplikacji; nazwano sys.exit(msg)
z znaczącym błędem w sposób wolicjonalny - ale po prostu nie mogłem tego zobaczyć.
In the docs for sys.exit()
it is stated: „[...] każdy inny obiekt jest drukowany na sys.stderr
i wyników w kodzie wyjścia 1”
To nieprawda na wezwanie od dziecka gwintem, gdzie sys.exit()
oczywiście działa jak thread.exit()
: „podnoszenie wyjątek SystemExit Gdy nie jest złapany, spowoduje to nić wyjść cicho”.
Myślę, że gdy programista chce, aby sys.exit(msg)
wydrukował komunikat o błędzie, powinien on zostać wydrukowany - niezależnie od miejsca, z którego jest wywoływany. Dlaczego nie? Obecnie nie widzę żadnego powodu. Przynajmniej w dokumentach powinno być wskazówka, że wiadomość nie jest drukowana z wątków.
Co myślisz? Dlaczego komunikaty o błędach są ukryte przed wątkami? Czy to ma sens?
poważaniem,
Jan-Philip Gehrcke
Dałeś mi dobrą radę, znowu;) Przy okazji: To takie wspaniałe, że dzielisz się swoją wiedzą tutaj. Widzę, że obecnie poświęcasz dużo swojego czasu, aby wypełnić tę platformę czystym ekspertem w Pythonie!To jest to, czego potrzebuje społeczność, ale to nie jest kwestia oczywiście. Bardzo, bardzo dziękuję za to! Jan-Philip –
@ Jan-Philip, jesteś bardzo mile widziany, i, dzięki WAM za to, zawsze miło jest słyszeć, że jestem z pomocą! –