python中主线程结束子线程无法停止的解决方案

先放上示例:

import time
import threading


def thread_test():
    while True:
        time.sleep(1)
        print('Hello!')


threading.Thread(target=thread_test).start()
time.sleep(3)
print('End.')

打印:

Hello!
Hello!
End.
Hello!
Hello!
Hello!

即使主线程结束了(打印了End.),但是创建的子线程仍然不断的打印Hello!信息,如果我们需要在主线程结束后立刻关闭子线程(避免占用资源,避免使用主线程中资源导致报错等),可以使用ThreadsetDaemon方法进行设置。

setDaemon方法是设置该线程是否为守护线程,参数为布尔值,默认是否,如果线程设置为守护线程,则主线程关闭后所有守护线程立刻关闭,即可解决上述问题。

将上述代码作如下修改:

t = threading.Thread(target=thread_test)
t.setDaemon(True)
t.start()
time.sleep(3)
print('End.')

打印:

Hello!
Hello!
End.
发布了4 篇原创文章 · 获赞 0 · 访问量 13

猜你喜欢

转载自blog.csdn.net/m0_46396257/article/details/104650463