python并发编程多进程之守护进程原理解析


Posted in Python onAugust 20, 2019

守护进程

主进程创建子进程目的是:主进程有一个任务需要并发执行,那开启子进程帮我并发执行任务

主进程创建子进程,然后将该进程设置成守护自己的进程

关于守护进程需要强调两点:

其一:守护进程会在主进程代码执行结束后就终止

其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children

如果我们有两个任务需要并发执行,那么开一个主进程和一个子进程分别去执行就ok了,如果子进程的任务在主进程任务结束后,就没有存在的必要了,那么该子进程应该在开启前就被设置成守护进程。主进程代码运行结束,守护进程随即终止

子进程还没来得及开始就挂了

设置了守护进程 就是不给子进程运行

守护进程必须在开启子进程前开启

from multiprocessing import Process
import time
def task(name):
  print("%s is running" % name)
  time.sleep(3)
  print("%s is done" % name)
if __name__ == "__main__":
  t = Process(target=task, args=('子进程1',))
  # 守护进程必须在开启子进程前开启
  t.daemon = True
  t.start()
  print("主")
'''
主
'''

开一个子进程是为了并发任务, 这个子进程的任务,在主进程死了,这个任务就没有意义存在,这个子进程就应该设置守护进程

守护进程练习题

在主进程代码执行完毕,只要出现打印主进程信息,p1就不会执行或者死掉

from multiprocessing import Process
import time
def foo():
  print(123)
  time.sleep(1)
  print("end123")
def bar():
  print(456)
  time.sleep(3)
  print("end456")
if __name__ == '__main__':
  p1=Process(target=foo)
  p2=Process(target=bar)
  p1.daemon=True
  p1.start()
  p2.start()
  print("main-------")  
'''
main-------
end456
'''

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单介绍Python中的JSON使用
Apr 28 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
Django实现快速分页的方法实例
Oct 22 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 Python
python3.5基于TCP实现文件传输
Mar 20 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
PyQt5实现画布小程序
May 30 Python
详解非极大值抑制算法之Python实现
Jun 28 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 Python
python控制台实现tab补全和清屏的例子
Aug 20 #Python
关于python字符串方法分类详解
Aug 20 #Python
python+tkinter实现学生管理系统
Aug 20 #Python
Python对列表的操作知识点详解
Aug 20 #Python
python中的global关键字的使用方法
Aug 20 #Python
python并发编程 Process对象的其他属性方法join方法详解
Aug 20 #Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 #Python
You might like
php at(@)符号的用法简介
2009/07/11 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
import的本质解析
2017/10/30 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
什么造成了Java里面的异常
2016/04/24 面试题
为什么group by 和order by会使查询变慢
2014/05/16 面试题
励志演讲稿3分钟
2014/08/21 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库