• 守护线程daemon


    如下代码:

    from threading import Thread
    import time
    
    
    def func1(n):
        time.sleep(10)
        print(n)
    
    
    t = Thread(target=func1, args=(1,))
    t.start()
    print("主线程结束")

    结果是:先打印 主线程结束,等十秒之后打印1

    如下代码,加入守护线程:

    from threading import Thread
    import time
    
    
    def func1(n):
        time.sleep(10)
        print(n)
    
    
    t = Thread(target=func1, args=(1,))
    t.daemon = Thread
    t.start()
    print("主线程结束")

    结果是,只打印了 主线程结果,没打印子线程结果,也没等10秒,直接结束。

    所以守护线程是随着主线程的结束而结束。

    再看一个现象:

    from threading import Thread
    import time
    
    
    def func1(n):
        time.sleep(10)
        print(n)
    
    
    def func2(n):
        time.sleep(3)
        print('子线程2', n*n)
    
    
    t = Thread(target=func1, args=(1,))
    t.daemon = Thread
    t.start()
    t2 = Thread(target=func2, args=(2,))
    t2.start()
    print("主线程结束")

    结果是,先打印 主线程结束,等3秒之后打印 子线程2 4  然后没有等待子线程1就直接结束了。

    所以,守护线程是随着主线程结束,然后等着其他子线程的结束而结束。

    与守护进程对比:

    守护进程:守护进程是随着主进程代码的结束而结束。

  • 相关阅读:
    【ssh】端口转发
    【python】ftp连接,主被动,调试等级
    【ftp】主动模式和被动模式
    【python】声明编码的格式
    【python】gearman阻塞非阻塞,同步/异步,状态
    【mongo】centos6.9安装mongo2.6.3
    线性代数
    Improved GAN
    GAN (Generative Adversarial Network)
    Scaled Exponential Linear Unit
  • 原文地址:https://www.cnblogs.com/aaronthon/p/9850882.html
Copyright © 2020-2023  润新知