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

 

 

多线程的另外一种调用方法

#多线程的另外一种调用方法

import threading

class Myserver(threading.Thread):

    def run(self):  #必须用run函数
        print('-------')


t1 = Myserver()
t1.start()
print('ending----')

 

posted @ 2018-05-03 18:08  阜阳小全  阅读(170)  评论(0编辑  收藏  举报