做完工作这个进程就应该被销毁

单线程情况:

一个进程 ,默认有一个主线程 ,这个主线程执行完代码后 ,就应该自动销毁。然后进程也销毁。

多线程情况:

主线程代表进程结束

一个进程可以开多个线程,默认开启进程 ,首先开一个主线程 ,然后开子线程 ,主线程代码执行完毕后 ,也要等所有子线程 ,执行完毕后 ,再销毁 ,然后到进程销毁。

守护进程 要等主进程挂了后 守护进程才挂

1、对主进程来说,运行完毕指的是主进程代码运行完毕2、对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕

主进程代码执行完后 ,守护进程就挂了

1、主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束,2、主线程在其他非守护线程运行完毕后才算运行完毕(守护线程在此时就被回收)。因为主线程的结束意味着进程的结束,进程整体的资源都将被回收,而进程必须保证非守护线程都运行完毕后才能结束。

守护线程守护着对象是主线程

守护线程盯着主线程 主线程一挂 守护线程就挂

总结 守护线程 ,就是等到进程内所有非守护线程运行完毕后 ,守护线程才销毁。

没有非守护线程 只有一个主线程情况下

开启守护线程方法一

t.setdaemon(True)

from threading import Thread
import timedef sayhi(name):time.sleep(2)print('%s say hello' %name)if __name__ == '__main__':t = Thread(target=sayhi,args=('子线程',))t.setDaemon(True)  # 必须在t.start()之前设置
    t.start()print('主线程')print(t.is_alive())'''
主线程
True
'''

开启守护线程方法二

t.daemon = True

from threading import Thread
import timedef sayhi(name):time.sleep(2)print('%s say hello' %name)if __name__ == '__main__':t = Thread(target=sayhi,args=('子线程',))t.daemon = True  # 必须在t.start()之前设置
    t.start()print('主线程')print(t.is_alive())'''
主线程
True
'''

子线程没有执行sayhi函数的代码,代表子线程已经死了

有非守护线程情况下

from threading import Thread
import timedef foo():print(123)time.sleep(1)print("end123")def bar():print(456)time.sleep(3)print("end456")if __name__ == '__main__':t1 = Thread(target=foo)t2 = Thread(target=bar)t1.daemon = Truet1.start()t2.start()print("main-------")# 非守护线程是t2 主线程  t1是守护线程# 守护线程 等所有非守护线程执行完毕后 再销毁'''首先t1.start,t2.start 开启线程都是很快执行 所以打印123 然后t1 time.sleep ,打印t2的456 ,t2也time.sleep了,然后打印主的消息 main这种情况是 守护线程t1 在t2 执行最后一行代码前就死了 因为 t2 的time.sleep 3秒t1 1秒 时间早就过了 所以t1先执行最后一行代码''''''
123
456
main-------
end123
end456
'''

转载于:https://www.cnblogs.com/mingerlcm/p/9019757.html

python 并发编程 多线程 守护线程相关推荐

  1. python 并发编程 多线程 目录

    线程理论 python 并发编程 多线程 开启线程的两种方式 python 并发编程 多线程与多进程的区别 python 并发编程 多线程 Thread对象的其他属性或方法 python 并发编程 多 ...

  2. Python并发编程之谈谈线程中的“锁机制”(三)

    大家好,并发编程 进入第三篇. 今天我们来讲讲,线程里的锁机制. 本文目录 何为Lock( 锁 )?如何使用Lock( 锁 )?为何要使用锁?可重入锁(RLock)防止死锁的加锁机制饱受争议的GIL( ...

  3. python并发编程--进程、线程、协程、锁、池、队列

    文章目录 操作系统的概念 进程 multiprocessing模块 守护进程 使用多进程实现一个并发的socket的server 锁 生产者消费者模型 数据共享 线程threading模块 守护线程和 ...

  4. Python 并发编程--进程,线程,协程

    并发编程 基本概念的区分: 并发 只有一个CPU,多个程序在一个CPU上轮流执行,宏观上多个进程并发执行,但微观上依旧是串行 并行 有多个CPU,多个程序在多个CPU上同时执行. 进程 计算机中最小的 ...

  5. python并发编程-进程池线程池-协程-I/O模型-04

    目录 进程池线程池的使用***** 进程池/线程池的创建和提交回调 验证复用池子里的线程或进程 异步回调机制 通过闭包给回调函数添加额外参数(扩展) 协程*** 概念回顾(协程这里再理一下) 如何实现 ...

  6. python 并发编程 多线程 event

    event实现了一个线程通知另外一个线程 线程的一个关键特性是每个线程都是独立运行且状态不可预测. 1.为什么要使用Event对象: 如果程序中的其 他线程需要通过判断某个线程的状态来确定自己下一步的 ...

  7. python并发编程之semaphore(信号量)_python 之 并发编程(守护进程、互斥锁、IPC通信机制)...

    9.5 守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就立即终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic process ...

  8. python 并发编程 多进程 目录

    python multiprocessing模块 介绍 python 开启进程两种方法 python 并发编程 查看进程的id pid与父进程id ppid python 并发编程 多进程 Proce ...

  9. Python并发编程系列之多线程

    1 引言 上一篇博文详细总结了Python进程的用法,这一篇博文来所以说Python中线程的用法.实际上,程序的运行都是以线程为基本单位的,每一个进程中都至少有一个线程(主线程),线程又可以创建子线程 ...

最新文章

  1. java 手编线程池_死磕 java线程系列之自己动手写一个线程池
  2. JPA和Hibernate的关系
  3. python学习笔记(生成xml)
  4. Google工程师:如何看待程序员普遍缺乏数据结构和算法知识?
  5. java彩色的世界_JAVA真彩色转256色的实现
  6. 电梯调度问题之需求分析
  7. mysql安装中出现的问题,
  8. es6 Class 的 Generator函数
  9. linux+git登陆,图解如何在Linux上配置git自动登陆验证
  10. 长路漫漫,唯剑作伴--基础
  11. 公式编辑器怎样使用具体图解
  12. Docker神器之百度云下载(群辉 LEDE)
  13. 如果想变强,有我在2
  14. 基础编程题目集-7-32 说反话-加强版 (20分)
  15. MCScanX使用说明
  16. UltraEdit常见问题及解决教程
  17. 啥是正交实验简单了解
  18. steam android app,steam手机版
  19. java实验报告之applet(小程序)
  20. 笔记本一开机就跳出来计算机,电脑开机就自动进入BIOS界面,该怎么解决?

热门文章

  1. mat分析dump分析_使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一)
  2. 此计算机中未配置默认浏览器,飞火浏览器设置默认浏览器失败了怎么办-飞火浏览器设置默认浏览器的方法 - 河东软件园...
  3. python的selenium模块_python-爬虫-selenium模块
  4. idea编译器没有tomcat的选项解决方案
  5. python语音合法命名-下列哪些语句在Python中是合法的( )
  6. win10无线投屏_Win10电脑屏幕分割成四分屏投屏测试
  7. 手机900e模式如何救_手机护眼模式真的有用吗?长时间看手机如何保护视力?...
  8. lnmp php 5.4,linux下搭建LNMP(linux+nginx+mysql+php)环境之php5.4安装
  9. apple quicktime怎么在ppt中用_只添加一个色块,你也能做出高大上的PPT排版
  10. 【数据库系统原理】数据库设计