為什麼 sys.exit() 在 Python 的線程內調用時不退出?

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

這可能是一個愚蠢的問題,但我正在測試我對 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 退出。我可以從這個程序的輸出中看到“post thread exit”永遠不會被打印出來,但是即使在線程調用 exit 之後,主線程也會繼續運行。

是否為每個線程創建了一個單獨的解釋器實例,而對 exit() 的調用只是退出該單獨的實例?如果是這樣,線程實現如何管理對共享資源的訪問?如果我確實想從線程中退出程序(不是我真正想要的,只是我理解的那樣)?