• 线程与进程3-守护线程


    join(),等待子线程执行完了,主线程才继续往下执行,等所有线程执行完了,才退出程序。

    当把子线程变成守护线程以后,只要主线程(非守护线程)执行完就退出程序,不管子线程完了没完。

    主线程没法设置成守护线程。

    #主线程启动子线程之后,两者是并行的,相互之间是独立的。
    import threading,time
    
    def run(n):
        print('task',n)
        time.sleep(2)
        print('task done',threading.current_thread()) #打印当前线程是主线程还是子线程
    
    start_time=time.time()
    t_objs=[]
    
    for i in range(10):
        t=threading.Thread(target=run,args=("t-%s"%i,))
        t.setDaemon(True) #把当前线程设置为守护线程,一定要在start之前设置。
        t.start()
        t_objs.append(t)
    
    print('----All threads has finished',threading.current_thread(),threading.active_count())
    print("Cost time is:",time.time()-start_time)
    

     运行结果,没有等待子线程(守护线程)的sleep的2S,而是直接结束了程序了。

    没有看到print('task done',threading.current_thread()) 的输出,证明守护线程被强制关闭了。

    task t-0
    task t-1
    task t-2
    task t-3
    task t-4
    task t-5
    task t-6
    task t-7
    task t-8
    task t-9
    ----All threads has finished <_MainThread(MainThread, started 11936)> 11
    Cost time is: 0.0010001659393310547
    
    Process finished with exit code 0
    
  • 相关阅读:
    Django的日志操作,记录一下自己的使用
    初学jupyter 与爬虫
    mysql的库名或者表名带空格不能删除的问题
    Linux的vim命令的快捷键
    DjangoORM相关(多表操作)
    DjangoORM相关(单表操作)
    Django模板
    Django URL相关
    Monkeyrunner学习记录之运行模拟器
    Monkeyrunner学习记录之环境搭建
  • 原文地址:https://www.cnblogs.com/momo8238/p/7345276.html
Copyright © 2020-2023  润新知