Perché sys.exit() non esce quando viene chiamato all’interno di un thread in Python?

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

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 sarebbe uscito quando chiamato nel thread, ma sarebbe uscito quando chiamato nel thread principale.

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

I documenti per sys.exit( ) afferma che la chiamata dovrebbe uscire da Python. Posso vedere dall'output di questo programma che "post thread exit" non viene mai stampato, ma il thread principale continua ad andare avanti anche dopo che il thread chiama l'uscita.

Viene creata un'istanza separata dell'interprete per ogni thread e la chiamata a exit() sta 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 io lo voglia davvero, ma solo per capire)?