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实现从一组颜色中找出与给定颜色最接近颜色的方法
Mar 19 Python
Python EOL while scanning string literal问题解决方法
Sep 18 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
python实现手机销售管理系统
Mar 19 Python
Django框架实现的分页demo示例
May 25 Python
详解python播放音频的三种方法
Sep 23 Python
Pytorch训练过程出现nan的解决方式
Jan 02 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
七个Python必备的GUI库
Apr 27 Python
python 实现图与图之间的间距调整subplots_adjust
May 21 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
第十二节--类的自动加载
2006/11/16 PHP
php四种定界符详解
2017/02/16 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
js实现一键复制功能
2017/03/16 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
python判断字符串是否包含子字符串的方法
2015/03/24 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
python仿抖音表白神器
2019/04/08 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
什么是python的自省
2020/06/21 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
关于爱国的演讲稿
2014/05/07 职场文书
校园环保建议书
2014/05/14 职场文书
机关搬迁方案
2014/05/18 职场文书
女生抽烟检讨书
2014/10/05 职场文书
高一语文教学反思
2016/02/16 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers