これは愚かな質問かもしれませんが、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()への呼び出しはその個別のインスタンスを終了していますか?もしそうなら、スレッド実装は共有リソースへのアクセスをどのように管理しますか?スレッドからプログラムを終了したい場合はどうすればよいですか(実際に終了したくはありませんが、理解しただけです)。