zoukankan      html  css  js  c++  java
  • 守护线程

    守护线程

    守护线程:只要主线程结束,那么子线程立即结束,不管子线程有没有运行完成。

    1、未加守护线程:先运行主线程先打印:“Done,运行完成”,然后继续休眠3秒子线程启动打印“哈哈哈”。

    import threading,time
    def run():
        time.sleep(3)
        print('哈哈哈')
    for i in range(5):
        t = threading.Thread(target=run)
        t.start()
    print('Done,运行完成。')
    #先运行主线程,先打印,Done,运行完成。,然后运行线程,先等待三秒之后,启动子线程
    #结果
    Done,运行完成。
    哈哈哈
    哈哈哈
    哈哈哈
    哈哈哈
    哈哈哈

    2、加了守护线程:setDaemon(True)#把子线程设置成守护线程

    主线程执行完成之后,子线程跟着结束,所有没有打印哈哈哈哈哈

    import  threading,time
    
    def run():
        time.sleep(3)#需要3秒
        print('哈哈哈哈哈')
    for i in range(5):
        t=threading.Thread(target=run)#实例化一个线程
        t.setDaemon(True)#把子线程设置成守护线程
        t.start()
    print('Done,运行完成。')
    #结果:
    Done,运行完成。

    3、主线程设置睡眠时间睡眠时间:

    import  threading,time
    def run():
        time.sleep(3)#需要3秒
        print('哈哈哈哈哈')
    for i in range(5):
        t=threading.Thread(target=run)#实例化一个线程
        t.setDaemon(True)#把子线程设置成守护线程
        t.start()
    print('Done,运行完成。')
    time.sleep(3)
    
    #结果
    Done,运行完成。
    哈哈哈哈哈
    哈哈哈哈哈
    哈哈哈哈哈

    注意:为什么上述代码只输出可三条“哈哈哈哈哈”?

    原因:主线程设置睡眠时间3秒,子线程的睡眠时间也刚好三秒,刚好能启动子线程,但是子线程启动之后不一定所有的子线程都能执行完,有些子线程可能还是执行完就已经结束

    1、如果主线程设置睡眠时间为2秒,主线程完成2秒后,还没等到子线程3秒启动,就结束,也只会打印:Done,运行完成。

    import  threading,time
    def run():
        time.sleep(3)#需要3秒
        print('哈哈哈哈哈')
    for i in range(5):
        t=threading.Thread(target=run)#实例化一个线程
        t.setDaemon(True)#把子线程设置成守护线程
        t.start()
    print('Done,运行完成。')
    time.sleep(2)
    #结果:
    Done,运行完成。

    2、如果主线程的睡眠时间超过子线程执行完成时间,那么子线程可以完全执行完:

    import  threading,time
    def run():
        time.sleep(3)#需要3秒
        print('哈哈哈哈哈')
    for i in range(5):
        t=threading.Thread(target=run)#实例化一个线程
        t.setDaemon(True)#把子线程设置成守护线程
        t.start()
    print('Done,运行完成。')
    time.sleep(4)
    #结果
    Done,运行完成。
    哈哈哈哈哈
    哈哈哈哈哈
    哈哈哈哈哈
    哈哈哈哈哈
    哈哈哈哈哈
  • 相关阅读:
    bzoj3676 [Apio2014]回文串
    bzoj4199 [Noi2015]品酒大会
    bzoj3171 [Tjoi2013]循环格
    bzoj4709 [Jsoi2011]柠檬
    bzoj2668 [cqoi2012]交换棋子
    bzoj1458 士兵占领
    25号搜索的一些例子,。。Oil Deposits&&Red and Black&&Knight Moves&&Catch That Cow&&Tempter of the Bone
    第一次超水(我错了,有难度的)的组队赛!!!The Coco-Cola Store &&Multiple of 17&& Box Game
    博弈 7月24号:HDU 2176(Nim博弈)
    2013年7月23号:大数的加与乘I-number&&Power of Cryptography
  • 原文地址:https://www.cnblogs.com/hwtfamily/p/9117893.html
Copyright © 2011-2022 走看看