Waarom wordt sys.exit() niet afgesloten wanneer het wordt aangeroepen in een thread in Python?

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

Dit zou een stomme vraag kunnen zijn, maar ik ben enkele van mijn aannames over Python aan het testen en ik ben in de war over waarom het volgende codefragment niet zou afsluiten als het in de thread werd aangeroepen, maar zou afsluiten wanneer het werd aangeroepen in de thread. hoofdthread.

import sys, tijd vanaf 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" 

De documenten voor sys.exit( ) staat dat de aanroep Python moet verlaten. Ik kan aan de uitvoer van dit programma zien dat "post thread exit" nooit wordt afgedrukt, maar de hoofdthread blijft gewoon doorgaan, zelfs nadat de thread-oproepen zijn afgesloten.

Wordt er voor elke thread een aparte instantie van de interpreter gemaakt en verlaat de aanroep om exit() alleen die aparte instantie? Zo ja, hoe beheert de threading-implementatie de toegang tot gedeelde bronnen? Wat als ik het programma uit de thread wilde sluiten (niet dat ik dat echt wil, maar gewoon om het te begrijpen)?