一尘不染

如何从Python线程退出整个应用程序?

python

如何从其线程之一退出整个Python应用程序?sys.exit()仅终止调用它的线程,所以没有帮助。

我不想使用os.kill()解决方案,因为这不是很干净。


阅读 223

收藏
2020-12-20

共1个答案

一尘不染

如果除主线程之外的所有线程都是守护进程,则最佳方法通常是thread.interrupt_main()-任何线程都可以使用它KeyboardInterrupt在主线程中引发a
,这通常会导致从主线程中合理地干净退出(包括主线程中的终结器被调用等)。

当然,如果这导致某些非守护进程线程使整个过程保持活动状态,则需要os._exit按照Mark的建议进行后续操作-但我认为这是最后的手段(有点像kill -9;-),因为它终止了事情非常残酷(finalizer不能运行,包括try/finally块,with块,atexit函数等)。

2020-12-20