当线程休眠时退出进程

EnT*_*Cas 1 python multithreading

在 python 脚本中,我启动了一堆线程,每个线程使用 time.sleep(interval) 按一定时间间隔提取一些资源。我有另一个线程正在运行,它使用 cmd 模块来监视用户输入。当用户输入“q”时,我调用

sys.exit(0)
Run Code Online (Sandbox Code Playgroud)

但是,当脚本运行并且我输入“q”时,线程用户输入监视线程将退出,但休眠线程仍然存在。(意味着程序不会退出)

我想知道我这样做是否正确?

小智 5

sys.exit 只会停止它执行的线程。如果您的程序中有其他非守护线程,它们将继续执行。Python 库文档的第 17.2.1 节包含:

\n\n
\n

线程可以标记为 \xe2\x80\x9cdaemon\n 线程\xe2\x80\x9d。该标志的意义在于,当只剩下守护线程时,整个 Python 程序就会退出。初始值是从创建线程继承的。可以通过守护进程属性设置该标志。

\n
\n\n

另请参见为什么在 Python 线程内调用 sys.exit() 时不退出?

\n