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

      

  • 相关阅读:
    第二阶段冲刺10
    第二阶段冲刺9
    第二阶段冲刺8
    (转载)关于数组的几个面试题
    关于静态变量
    linux进程地址空间详解(转载)
    单例模式,多种实现方式JAVA
    最佳线程数
    python学习
    svn设置
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7248204.html
Copyright © 2011-2022 走看看