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,运行完成。
    哈哈哈哈哈
    哈哈哈哈哈
    哈哈哈哈哈
    哈哈哈哈哈
    哈哈哈哈哈
  • 相关阅读:
    POJ 3259 Wormholes【BellmanFord】
    POJ 2960 SNim【SG函数的应用】
    ZOJ 3578 Matrixdp水题
    HDU 2897 邂逅明下【bash博弈】
    BellmanFord 算法及其优化【转】
    【转】几个Java的网络爬虫
    thinkphp 反字符 去标签 自动加点 去换行 截取字符串 冰糖
    php 二维数组转 json文本 (jquery datagrid 数据格式) 冰糖
    PHP 汉字转拼音(首拼音,所有拼音) 冰糖
    设为首页与加入收藏 兼容firefox 冰糖
  • 原文地址:https://www.cnblogs.com/hwtfamily/p/9117893.html
Copyright © 2011-2022 走看看