python multiprocessing模块用法及原理介绍


Posted in Python onAugust 20, 2019

一 multiprocessing模块介绍

python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进程。

Python提供了multiprocessing。 multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。

multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,>提供了Process、Queue、Pipe、Lock等组件。

需要再次强调的一点是:与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进程内。

二 Process类的介绍

创建进程的类:

Process([group [, target [, name [, args [, kwargs]]]]]),由该类实例化得到的对象,可用来开启一个子进程

强调:

1. 需要使用关键字的方式来指定参数

2. args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号

参数介绍:

group参数未使用,值始终为None

target表示调用对象,即子进程要执行的任务

args表示调用对象的位置参数元组,args=(1,2,'mike',)

kwargs表示调用对象的字典,kwargs={'name':'mike','age':18}

name为子进程的名称

方法介绍:

p.start() :# 启动进程,并调用该子进程中的p.run()

p.run() :# 进程启动时运行的方法,正是它去调用target指定的函数,我们自定义类的类中一定要实现该方法

p.terminate() : # 强制终止进程p,不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程,使用该方法需要特别小心这种情况。如果p还保存了一个锁那么也将不会被释放,进而导致死锁

p.is_alive() :# 如果p仍然运行,返回True

p.join([timeout]) :# 主进程等待p终止(强调:是主进程处于等的状态,而p是处于运行的状态)。timeout是可选的超时时间。

属性介绍

p.daemon:默认值为False,如果设为True,代表p为后台运行的守护进程,当p的父进程终止时,p也随之终止,并且设定为True后,p不能创建自己的新进程,必须在p.start()之前设置

p.name:进程的名称

p.pid:进程的pid

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

Python 相关文章推荐
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
Python中关于字符串对象的一些基础知识
Apr 08 Python
python遍历数组的方法小结
Apr 30 Python
python通过加号运算符操作列表的方法
Jul 28 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
使用Python从零开始撸一个区块链
Mar 14 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
Python提取特定时间段内数据的方法实例
Apr 01 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
pandas实现导出数据的四种方式
Dec 13 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 #Python
PyTorch中常用的激活函数的方法示例
Aug 20 #Python
Pytorch抽取网络层的Feature Map(Vgg)实例
Aug 20 #Python
python批量解压zip文件的方法
Aug 20 #Python
pytorch获取vgg16-feature层输出的例子
Aug 20 #Python
python 并发编程 非阻塞IO模型原理解析
Aug 20 #Python
Python实现某论坛自动签到功能
Aug 20 #Python
You might like
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
php取得字符串首字母的方法
2015/03/25 PHP
CI框架常用函数封装实例
2016/11/21 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
PHP 实现重载
2021/03/09 PHP
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
python3如何将docx转换成pdf文件
2018/03/23 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
python保存文件方法小结
2018/07/27 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python 自由定制表格的实现示例
2020/03/20 Python
python 通过exifread读取照片信息
2020/12/24 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
海淘母婴商城:国际妈咪
2016/07/23 全球购物
德国机车企业:FC-Moto
2017/10/27 全球购物
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
银行优秀员工事迹材料
2014/05/29 职场文书
初中家长评语和期望
2014/12/26 职场文书
委托收款证明
2015/06/23 职场文书
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android