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

      

  • 相关阅读:
    Many Equal Substrings CF
    Seek the Name, Seek the Fame POJ
    人人都是好朋友(离散化 + 并查集)
    建设道路
    day_30
    day_29作业
    day_29
    day_28
    day_27
    day_26作业
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7248204.html
Copyright © 2020-2023  润新知