Pourquoi sys.exit() ne se ferme-t-il pas lorsqu’il est appelé dans un thread en Python ?

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

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 fermerait pas lorsqu'il serait appelé dans le fil, mais se fermerait lorsqu'il serait 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" 

Les docs pour sys.exit( ) indiquent 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 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() ne fait que quitter cette instance distincte ? Si oui, comment l'implémentation de threading gère-t-elle l'accès aux ressources partagées ? Et si je voulais quitter le programme à partir du fil (pas que je le veuille vraiment, mais juste pour comprendre) ?