码迷,mamicode.com
首页 > 其他好文 > 详细

join() threading.Thread setDaemon(True)

时间:2018-05-03 20:04:04      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:play   sel   imp   stop   init   程序   game   守护线程   实例化   

‘‘‘
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)

标签:play   sel   imp   stop   init   程序   game   守护线程   实例化   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!