在python脚本中,我启动了一堆线程,每个线程使用time.sleep(interval)以一定间隔拉取一些资源。我有另一个线程正在运行,它使用cmd模块来监视用户输入。当用户输入“q”时,我会调用
sys.exit(0)
但是,当脚本运行并输入'q'时,线程用户输入监视线程将退出,但是休眠线程仍处于活动状态。 (意思是程序没有退出)
我想知道我是否正确地做到了这一点?
答案 0 :(得分:4)
sys.exit只会停止它执行的线程。如果程序中有其他非守护程序线程,它们将继续执行。 Python库文档的Section 17.2.1包含:
一个线程可以被标记为“守护进程” 线”。这面旗帜的意义 是整个Python程序 仅在守护程序线程时退出 剩下。初始值是继承的 来自创建线程。国旗可以 通过守护进程属性设置。
另见Why does sys.exit() not exit when called inside a thread in Python?。