Ini bisa menjadi pertanyaan yang bodoh, tetapi saya menguji beberapa asumsi saya tentang Python dan saya bingung mengapa potongan kode berikut tidak akan keluar saat dipanggil di utas, tetapi akan keluar saat dipanggil di utas utama.
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"
Dokumen untuk sys.exit () menyatakan bahwa panggilan harus keluar dari Python. Saya dapat melihat dari output program ini bahwa "post thread exit" tidak pernah dicetak, tetapi thread utama terus berjalan bahkan setelah thread memanggil keluar.
Apakah instance terpisah dari interpreter sedang dibuat untuk setiap thread, dan panggilan ke exit () hanya keluar dari instance terpisah itu? Jika ya, bagaimana implementasi threading mengelola akses ke sumber daya bersama? Bagaimana jika saya memang ingin keluar dari program dari utas (bukan yang sebenarnya saya inginkan, tetapi supaya saya mengerti)?