我有以下代码:
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会有什么不同,我在spider Ipython控制台中运行代码。
在这两种情况下,程序似乎都没有退出,它一直打印"Hi this is function 1“。我的假设是守护程序线程在主线程结束时将继续运行,但普通线程将退出。
有谁能解释一下。
发布于 2020-01-06 20:49:55
这个问题是因为在python shell中运行python代码时观察到守护程序线程的行为不同,在我的例子中,假设Spyder中的Ipython与从命令行运行python文件(如“python thread_example.py”)的行为不同。
从命令行运行文件会给出预期的行为。
可以参考这个堆栈溢出的答案:Python daemon thread does not exit when parent thread exits
发布于 2021-01-01 19:22:12
它使线程在true时在后台运行而不干扰主工作,在false时作为主线程运行
https://stackoverflow.com/questions/59601576
复制相似问题