C'est peut-être une question stupide, mais je teste certaines de mes hypothèses sur Python et je ne comprends pas pourquoi le bout de code suivant ne se termine pas lorsqu'il est appelé dans le thread, mais se termine lorsqu'il est appelé dans le thread principal.
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 documentation de sys.exit() indique que l'appel doit sortir de Python. Je peux voir dans la sortie de ce programme que "post thread exit" n'est jamais imprimé, mais le thread principal continue à fonctionner même après que le thread ait appelé exit.
Est-ce qu'une instance séparée de l'interpréteur est créée pour chaque thread, et l'appel à exit() ne fait que quitter cette instance séparée ? Dans ce cas, comment l'implémentation du threading gère-t-elle l'accès aux ressources partagées ? Que se passe-t-il si je veux quitter le programme à partir du thread (non pas que je le veuille vraiment, mais je veux juste comprendre) ?