Đây có thể là một câu hỏi ngu ngốc, nhưng tôi đang thử nghiệm một số giả định của mình về Python và tôi bối rối không hiểu tại sao đoạn mã sau sẽ không thoát khi được gọi trong chuỗi, nhưng sẽ thoát khi được gọi trong chuỗi chính.
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"
Các tài liệu cho sys.exit () nói rằng lệnh gọi sẽ thoát khỏi Python. Tôi có thể thấy từ đầu ra của chương trình này rằng "bài thoát luồng" không bao giờ được in, nhưng luồng chính vẫn tiếp tục ngay cả sau khi thoát lệnh gọi luồng.
Có phải một phiên bản trình thông dịch riêng biệt đang được tạo cho mỗi luồng và lệnh gọi exit () chỉ thoát khỏi phiên bản riêng biệt đó không? Nếu vậy, việc triển khai phân luồng quản lý quyền truy cập vào tài nguyên được chia sẻ như thế nào? Điều gì sẽ xảy ra nếu tôi muốn thoát khỏi chương trình khỏi chuỗi (không phải tôi thực sự muốn, nhưng chỉ để tôi hiểu)?