Cela pourrait être une question stupide, mais je teste certaines de mes hypothèses sur Python et je ne comprends pas pourquoi l'extrait de code suivant ne se ferme pas lorsqu'il est appelé dans le thread, mais se ferme 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 quitter Python. Je peux voir à partir de la sortie de ce programme que "post thread exit" n'est jamais imprimé, mais le thread principal continue juste même après que le thread appelle exit.
Une instance distincte de l'interpréteur est-elle créée pour chaque thread et l'appel à exit () quitte simplement cette instance distincte? Si tel est le cas, comment l'implémentation de thread gère-t-elle l'accès aux ressources partagées? Et si je voulais quitter le programme du fil de discussion (pas que je le veuille réellement, mais juste pour que je comprenne)?