นี่อาจเป็นคำถามโง่ ๆ แต่ฉันกำลังทดสอบสมมติฐานบางอย่างของฉันเกี่ยวกับ 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 ฉันสามารถเห็นได้จากผลลัพธ์ของโปรแกรมนี้ว่า "การออกจากเธรด" จะไม่ถูกพิมพ์ออกมา แต่เธรดหลักก็ยังคงทำงานต่อไปแม้หลังจากที่เธรดเรียกออก
มีการสร้างอินสแตนซ์แยกต่างหากของตัวแปลสำหรับแต่ละเธรดและการเรียกเพื่อออก () เป็นเพียงการออกจากอินสแตนซ์แยกนั้นหรือไม่ ถ้าเป็นเช่นนั้นการใช้งานเธรดจะจัดการการเข้าถึงทรัพยากรที่แชร์ได้อย่างไร จะเป็นอย่างไรถ้าฉันต้องการออกจากโปรแกรมจากเธรด (ไม่ใช่ว่าฉันต้องการจริงๆ แต่ฉันก็เข้าใจ)