이것은 어리석은 질문이 될 수 있지만 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에서 종료되어야한다고 명시되어 있습니다. 이 프로그램의 출력에서 "post thread exit"가 인쇄되지 않는다는 것을 알 수 있습니다. 그러나 주 스레드는 스레드 호출이 종료 된 후에도 계속 진행됩니다.
인터프리터의 개별 인스턴스가 각 스레드에 대해 생성되고 exit ()에 대한 호출이 해당 개별 인스턴스를 종료합니까? 그렇다면 스레딩 구현은 공유 리소스에 대한 액세스를 어떻게 관리합니까? 스레드에서 프로그램을 종료하려면 어떻게해야합니까 (실제로 원하는 것이 아니라 이해하도록하겠습니다)?