Por que sys.exit() não sai quando chamado dentro de um thread em Python?

| | | | | | | | | | | | | | | | | |

Esta pode ser uma pergunta estúpida, mas estou testando algumas de minhas suposições sobre Python e estou confuso sobre por que o seguinte trecho de código não sairia quando chamado no encadeamento, mas sairia quando chamado no thread principal.

import sys, tempo de threading import Thread def testexit(): time.sleep(5) sys.exit() print "post thread exit" t = Thread(target = testexit ) t.start() t.join() print "pré saída principal, saída pós thread" sys.exit() print "pós saída principal" 

Os documentos para sys.exit( ) indicam que a chamada deve sair do Python. Eu posso ver na saída deste programa que "post thread exit" nunca é impresso, mas o thread principal continua mesmo depois que o thread chama exit.

Uma instância separada do interpretador está sendo criada para cada thread e a chamada para exit() está apenas saindo dessa instância separada? Em caso afirmativo, como a implementação de threading gerencia o acesso a recursos compartilhados? E se eu quisesse sair do programa do encadeamento (não que eu realmente queira, mas apenas para entender)?