zoukankan      html  css  js  c++  java
  • 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----')
  • 相关阅读:
    springboot + self4j 学习笔记
    git 创建本地分支,并且推送到远程分支
    windows 下生成 ssh key
    Topshelf
    ADSL拨号连接
    EF中使用Contains方法
    elasticsearch中的概念简述
    CriticalFinalizerObject的作用
    sqlserver中的统计语法
    Windbg简单介绍
  • 原文地址:https://www.cnblogs.com/lhqlhq/p/8986796.html
Copyright © 2011-2022 走看看