join() threading.Thread setDaemon(True)

时间:2018-05-03 18:30:45   收藏:0   阅读:147
‘‘‘
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------------)

 

原文:https://www.cnblogs.com/lhqlhq/p/8986796.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!