为什么在Python中在线程内调用sys.exit()时无法退出?
- 论坛
- 为什么在Python中在线程内调用sys.exit()时无法退出?
16 浏览
为什么在Python中在线程内调用sys.exit()时无法退出?
我对下面的代码片段为何在线程中调用时不会退出,但在主线程中调用时会退出感到困惑。
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()
的调用只是退出了该单独的实例?如果是这样,线程实现如何管理对共享资源的访问?如果我确实想从线程中退出程序,该怎么办(虽然我实际上并不想这样做,只是为了理解)?