无法使用线程.setDaemon(True)在主程序终止时终止子线程

2024-04-26 12:12:29 发布

您现在位置:Python中文网/ 问答频道 /正文

一号文件斯拉维.py在

def sam():
    while True:
        print "HI"

主程序/文件试用版.py在

^{pr2}$

我希望打印“Hi”停止一旦我的主线结束,但它继续打印Hi。我试过使用x.setDaemon(True)和x.Daemon=True,但它不起作用。我知道以前有人问过这样的问题,但我无法找到解决办法

-----o/p-------

>>>
>>>Hi
Hi
Hi
Hi
Hi
Hi
Hi

它继续打印嗨


Tags: 文件pytruesamdefhi主线daemon
3条回答

在测试.py公司名称:

from threading import Thread
import sravi
x=Thread(target=sravi.sam)
x.daemon=True
x.start()

在斯拉维.py公司名称:

^{pr2}$

当您运行python test.py时,在退出之前可能会打印出任意数量的“Hi”行。这只是因为执行线程的确切交织是未定义的。不能保证你只得到一个“嗨”。在

当x.setDaemon(True)时,线程x在主线程结束时终止。
要证明这一点,请使用以下代码:

from threading import Thread
def sam():
    while True:
    print "HI"


x=Thread(target=sam)
x.setDaemon(True)
x.start()
time.sleep(2)

您将看到,两秒钟后,sam函数将停止打印“hi”。在

一号文件斯拉维.py在

import time

def sam(event):
    while event.is_set():
        print "hi"

主程序/文件试用版.py在

^{pr2}$

子线程在主线程结束后停止执行

相关问题 更多 >