Questa potrebbe essere una domanda stupida, ma sto testando alcune delle mie ipotesi su Python e sono confuso sul motivo per cui il seguente frammento di codice non uscirà quando viene chiamato nel thread, ma uscirà quando viene chiamato nel thread principale.
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"
La documentazione di sys.exit () afferma che la chiamata dovrebbe uscire da Python. Vedo dall'output di questo programma che "post thread exit" non viene mai stampato, ma il thread principale continua a funzionare anche dopo che il thread chiama exit.
Viene creata un'istanza separata dell'interprete per ogni thread e la chiamata a exit () sta semplicemente uscendo da quell'istanza separata? In tal caso, in che modo l'implementazione del threading gestisce l'accesso alle risorse condivise? E se volessi uscire dal programma dal thread (non che lo voglia effettivamente, ma solo così ho capito)?