zoukankan      html  css  js  c++  java
  • 线程与进程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
    
  • 相关阅读:
    APP 元素定位总结(未完待补充)
    vue-axios常见请求配置和全局设置
    vue-axios发送并发请求
    vue-axios基本使用
    vue-vuex-store目录结构
    vue-vuex-modules的基本使用
    vue-vuex-actions的基本使用
    vue-vuex-mutations的类型常量
    vue-vuex-state响应式
    vue-vuex-mutation的提交风格
  • 原文地址:https://www.cnblogs.com/momo8238/p/7345276.html
Copyright © 2011-2022 走看看