Почему sys.exit () не завершается при вызове внутри потока в Python?
Это может быть глупым вопросом, но я проверяю некоторые из моих предположений о Python, и меня смущает вопрос, почему следующий фрагмент кода не завершится при вызове в потоке, а завершится при вызове в основном потоке.
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"
Документы для sys.exit () утверждают, что вызов должен выйти из Python. Я могу видеть из результатов этой программы, что «выход из пост-потока» никогда не печатается, но основной поток просто продолжает работать даже после того, как поток вызывает выход.
Создается ли отдельный экземпляр интерпретатора для каждого потока, и вызов exit () просто выходит из этого отдельного экземпляра? Если да, то как реализация многопоточности управляет доступом к общим ресурсам? Что если я захочу выйти из программы (не то, что я на самом деле хочу, а просто, чтобы я поняла)?