Dies könnte eine dumme Frage sein, aber ich teste einige meiner Annahmen über Python und bin verwirrt darüber, warum das folgende Codefragment beim Aufruf im Thread nicht beendet wird, sondern beim Aufruf im Hauptthread beendet wird.
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"
In den Dokumenten für sys.exit () wird angegeben, dass der Aufruf von Python beendet werden soll. Ich kann der Ausgabe dieses Programms entnehmen, dass "Post-Thread-Exit" nie gedruckt wird, aber der Haupt-Thread läuft einfach weiter, selbst nachdem der Thread Exit aufgerufen hat.
Wird für jeden Thread eine separate Instanz des Interpreters erstellt, und der Aufruf von exit () beendet nur diese separate Instanz? Wenn ja, wie verwaltet die Threading-Implementierung den Zugriff auf freigegebene Ressourcen? Was wäre, wenn ich das Programm aus dem Thread beenden wollte (nicht, dass ich es wirklich möchte, aber nur damit ich es verstehe)?