Почему sys.exit() не завершается при вызове внутри потока в Python? ⇐ Python

Программы на Python
Anonymous
Почему sys.exit() не завершается при вызове внутри потока в Python?

Сообщение Anonymous »

Я не понимаю, почему следующий фрагмент кода не завершается при вызове в потоке, но завершается при вызове в основном потоке.

Код: Выделить всё

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

Подробнее здесь: https://stackoverflow.com/questions/905 ... -in-python

Вернуться в «Python»