zoukankan      html  css  js  c++  java
  • python的多线程和守护线程

    1、创建一个多线程

    import threading
    import time
    
    '''
    def threading_func(num):
        print("running on number:%s" %(num))
        time.sleep(3)
    
    if __name__ == '__main__':
        t1 = threading.Thread(target=threading_func,args=(1,))
        t2 = threading.Thread(target=threading_func,args=(2,))
        t1.start()
        t2.start()
        #这里不会等待就会执行print语句,因为执行这个代码的是一个线程,而t1和t2又分别是2个线程,所以不会有等待就会执行print语句
        print("____________________main____________________")
    

    2、join语句,等待某个线程执行完成在往下执行

    def threading_func(num):
        print("running on number:%s" %(num))
        time.sleep(3)
    
    if __name__ == '__main__':
        t1 = threading.Thread(target=threading_func,args=(1,))
        t2 = threading.Thread(target=threading_func,args=(2,))
        t1.start()
        t2.start()
        # t2.join()
        print(t1.getName())
        #获取线程名
        print(t2.getName())
        t1.join()
        t2.join()
        #等待线程t1的执行完成在往下执行,就是wait的意思,子线程t1执行后在往下执行
        print("____________________main____________________")
    

    3、线程的守护daemon

    import threading
    import time
    
    def run(n):
        print("[%s]----is running----
    " %n)
        time.sleep(3)
        print("[%s]----is down----
    " %n)
    
    '''
    def main():
        for i in range(5):
            t = threading.Thread(target=run,args=[i,])
            t.start()
            time.sleep(3)
            print("start threading",t.getName())
    
    #这个例子是这样的,m是主线程,m这个主线程调用main这个方法,main这个方法又构建了5个子线程,我们就可以设置主线程监视子线程,监视的意思就是主线程退出,无论子线程是否执行
    #完毕,都全部退出m.setDaemon(True),这个设置就是m这个主线程监视m的所有的子线程
    m = threading.Thread(target=main,args=[])
    m.setDaemon(True)
    m.start()
    # m.join()
    print("-----main thread down----")
    
    
    # 结果如下,主线程退出后,子线程有的还没有开始就已经退出了
    # -----main thread down----
    # [0]----is running----
    
    '''
    
    
    
    '''
    
    def main():
        for i in range(5):
            t = threading.Thread(target=run,args=[i,])
            t.start()
            time.sleep(3)
            print("start threading",t.getName())
    
    #这个例子是这样的,m是主线程,m这个主线程调用main这个方法,main这个方法又构建了5个子线程,我们就可以设置主线程监视子线程,监视的意思就是主线程退出,无论子线程是否执行
    #完毕,都全部退出m.setDaemon(True),这个设置就是m这个主线程监视m的所有的子线程
    m = threading.Thread(target=main,args=[])
    # m.setDaemon(True)
    m.start()
    # m.join()
    print("-----main thread down----")
    
    
    # 结果如下,主线程退出后,子线程有的还没有开始就已经退出了
    # -----main thread down----
    # [0]----is running----
    
    -----main thread down----
    [0]----is running----
    
    start threading Thread-2
    [0]----is down----
    
    [1]----is running----
    
    [1]----is down----
    start threading Thread-3
    
    [2]----is running----
    
    start threading Thread-4
    [3]----is running----
    
    [2]----is down----
    
    start threading Thread-5
    [3]----is down----
    
    [4]----is running----
    
    start threading Thread-6
    [4]----is down----
    
    
    '''
    

      

  • 相关阅读:
    【codecombat】 试玩全攻略 第二章 边远地区的森林 一步错
    【codecombat】 试玩全攻略 第十八关 最后的kithman族
    【codecombat】 试玩全攻略 第二章 边远地区的森林 woodlang cubbies
    【codecombat】 试玩全攻略 第二章 边远地区的森林 羊肠小道
    【codecombat】 试玩全攻略 第十七关 混乱的梦境
    【codecombat】 试玩全攻略 第二章 边远地区的森林 林中的死亡回避
    【codecombat】 试玩全攻略 特别关:kithguard斗殴
    【codecombat】 试玩全攻略 第二章 边远地区的森林 森林保卫战
    【codecombat】 试玩全攻略 第二章 边远地区的森林
    实验3 类和对象||
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7248204.html
Copyright © 2011-2022 走看看