Это может быть глупым вопросом, но я проверяю некоторые из моих предположений о 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 () просто выходит из этого отдельного экземпляра? Если да, то как реализация многопоточности управляет доступом к общим ресурсам? Что, если я захочу выйти из программы (не то, что я на самом деле хочу, а просто так понимаю)?