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中的私有属性
Aug 21 Python
Python定时执行之Timer用法示例
May 27 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
解决python3 安装不了PIL的问题
Aug 16 Python
pytorch索引查找 index_select的例子
Aug 18 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
Python如何爬取qq音乐歌词到本地
Jun 01 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 Python
python boto和boto3操作bucket的示例
Oct 30 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 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
一个高ai的分页函数和一个url函数
2006/10/09 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
php实现简易计算器
2020/08/28 PHP
js 图片等比例缩放代码
2010/05/13 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
JavaScript的面向对象编程基础
2015/08/13 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
python类装饰器用法实例
2015/06/04 Python
Python用模块pytz来转换时区
2016/08/19 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
简单谈谈python基本数据类型
2018/09/26 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
PHP面试题大全
2015/10/16 面试题
税务会计岗位职责
2015/04/02 职场文书
节约用电通知
2015/04/25 职场文书
征求意见函
2015/06/05 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android
tree shaking对打包体积优化及作用
2022/07/07 Java/Android