zoukankan      html  css  js  c++  java
  • 守护线程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就直接结束了。

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

    与守护进程对比:

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

  • 相关阅读:
    POJ 1007 DNA Sorting
    POJ 1005 I Think I Need a Houseboat
    POJ 1004 Financial Management
    POJ 1003 Hangover
    洛谷 P2064 奇妙的汽车
    01分数规划学习笔记
    线性基学习笔记
    codeforces 727F Polycarp's problems
    codeforces 722E Research Rover
    并查集学习笔记
  • 原文地址:https://www.cnblogs.com/aaronthon/p/9850882.html
Copyright © 2011-2022 走看看