【发布时间】:2020-01-05 15:54:13
【问题描述】:
我有以下代码:
import threading
from time import sleep
def print_function1():
while True:
print("Hi this is function 1\n")
sleep(2)
if __name__ == "__main__":
# creating thread
t1 = threading.Thread(target=print_function1 )
t1.daemon = True
# starting thread 1
t1.start()
sleep(10)
# both threads completely executed
print("Done!")
现在我无法理解如果我设置 t1.daemon True 或 False 会有什么不同,我在蜘蛛 Ipython 控制台中运行代码。
在这两种情况下,程序似乎都没有退出,它一直在打印“嗨,这是函数 1”。 我的假设是主线程完成后守护线程将继续运行,但正常线程将退出。
谁能解释一下。
【问题讨论】:
-
实际上恰恰相反:当主线程存在时,守护线程不会继续运行。这段代码也适用于我(=当 daemon=True 时程序存在,当 daemon=False 时相反)
-
但对我来说,这两种情况下都会继续打印。在守护进程的情况下它应该停止打印吗??
-
是的。你用的是哪个版本的python?
-
嘿,Tomer,我确实想通了,这是因为将 python 代码运行到 python shell 与从命令行运行 python 文件的行为不同。这是参考答案:stackoverflow.com/questions/21843916/…。感谢您的帮助。
标签: python multithreading daemon