Warum wird sys.exit() nicht beendet, wenn es in einem Thread in Python aufgerufen wird?

| | | | | | | | | | | | | | | | | |

Dies könnte eine dumme Frage sein, aber ich teste einige meiner Annahmen über Python und bin verwirrt darüber, warum das folgende Code-Snippet nicht beendet wird, wenn es im Thread aufgerufen wird, aber beendet wird, wenn es im Thread aufgerufen wird Hauptthread.

import sys, time from threading import Thread def testexit(): time.sleep(5) sys.exit() print "post thread exit" t = Thread(target = testexit ) t.start() t.join() print "pre main exit, post thread exit" sys.exit() print "post main exit" 

Die Dokumentation für sys.exit( ) geben an, dass der Aufruf von Python beendet werden soll. Ich kann aus der Ausgabe dieses Programms ersehen, dass "Post-Thread-Exit" nie gedruckt wird, aber der Haupt-Thread läuft einfach weiter, auch nachdem der Thread Exit aufgerufen hat.

Wird für jeden Thread eine separate Instanz des Interpreters erstellt und verlässt der Aufruf von exit() nur diese separate Instanz? Wenn ja, wie verwaltet die Threading-Implementierung den Zugriff auf gemeinsam genutzte Ressourcen? Was ist, wenn ich das Programm aus dem Thread beenden wollte (nicht, dass ich das wirklich möchte, aber nur damit ich es verstehe)?