join() threading.Thread setDaemon(True)

Posted 阜阳小全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了join() threading.Thread setDaemon(True)相关的知识,希望对你有一定的参考价值。

‘‘‘
join():在子线程完成之前执行,这个子线程的父线程将一直被阻塞

setDaemon(True):将线程声明为守护线程,必须在start()之前设置,如果不设置为守护线程,程序会被无限挂起。这个方法基本和join是相反的。
当我们在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程就兵分两路,分别运行,那么当主线程完成想退出时,
会检验子线程是否完成,如果子线程未完成,则主线程会等待子线程完成后再退出,但有时候,我们需要的是,只要主线程完成了,不管子线程是否完成,
都要和主线程一起推出,这是就可以用setDaemon(True)方法啦

‘‘‘
import time
import threading

def music():
    print(begin to listen %s %time.ctime())
    time.sleep(3)
    print(stop to listen %s %time.ctime())

def game():
    print(begin to play game %s %time.ctime())
    time.sleep(5)
    print(stop to play game %s %time.ctime())

if __name__ == __main__:
    t1 = threading.Thread(target=music)
    t2 = threading.Thread(target=game)

    t1.start()
    # t1.join()


    t2.start()
    # t2.join()

    print(ending------)
import time
import threading

class Tt():
    def __init__(self,name,things):
        self.name = name
        self.things = things

    def aa(self):
        print(%s开始%s %s %(self.name,self.things,time.ctime()))
        time.sleep(3)
        print(%s结束%s %s %(self.name,self.things,time.ctime()))


    def bb(self):
        print(%s开始%s %s %(self.name,self.things,time.ctime()))
        time.sleep(5)
        print(%s结束%s %s % (self.name, self.things, time.ctime()))


T = [] #定义一个空字典
tt1 = Tt(小狗,音乐) #实例化
tt2 = Tt(豆豆,游戏)

t1 = threading.Thread(target=tt1.aa)#tt1.aa可以看作tt.aa()函数
t2 = threading.Thread(target=tt2.bb)

T.append(t1)
T.append(t2)

for i in T:
    i.start()

print(ending------------)

 

以上是关于join() threading.Thread setDaemon(True)的主要内容,如果未能解决你的问题,请参考以下文章

threading join方法

threading线程

python 包之 threading 多线程教程

System.Threading.Thread.Sleep(2000);啥意思,啥用

threading包

python多线程编程 join