Was ist der Unterschied zwischen sys.exit (0) und os._exit (0)?


72

Bitte helfen Sie mir bei der Klärung des Konzepts dieser beiden Python-Anweisungen hinsichtlich des Unterschieds in der Funktionalität:

  1. sys.exit(0)

  2. os._exit(0)


8
Haben Sie die Dokumente nachgeschlagen?
JDI

Antworten:


74

Laut Dokumentation :

os._exit():

Beenden Sie den Prozess mit dem Status n, ohne Bereinigungshandler aufzurufen, Standardpuffer zu leeren usw.

Hinweis Die Standardmethode zum Beenden ist sys.exit(n). _exit()sollte normalerweise erst im untergeordneten Prozess nach a verwendet werden fork().


2
In meinem Programm starte ich mehrere Threads. Ich wollte, dass das gesamte Programm beendet wird, wenn es in einem Thread eine Ausnahme gibt. Ich benutze sys.exit (1) mit Ausnahme von Thread, aber dies wird nur von einem einzelnen Thread beendet, nicht vom Programm. Also habe ich os_exit (1) verwendet. Ist das ein guter Ansatz?
Aamir Adnan


14
Könnte jemand erweitern, "sollte normalerweise nur im untergeordneten Prozess nach einem fork () verwendet werden"? Vielen Dank
Gringo Suave

Warum erfordert die "Standardmethode zum Beenden" den Import eines Moduls? Scheint lächerlich.
Deanresin

1
@ Deanresin Warum muss es eingebaut sein? Auch in C müssen Sie einschließen stdlib.h.
Ignatius

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.