最佳答案
我很困惑,为什么下面的代码片段在线程中调用时不会退出,而在主线程中调用时会退出。
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()的调用正在退出该单独的实例?如果是,线程实现如何管理对共享资源的访问?如果我确实想从线程中退出程序(并不是我真的想退出,只是为了让我理解) ,那该怎么办?