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 13 Python
Python多线程、异步+多进程爬虫实现代码
Feb 17 Python
python 写入csv乱码问题解决方法
Oct 23 Python
socket + select 完成伪并发操作的实例
Aug 15 Python
python xpath获取页面注释的方法
Jan 14 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
python实现扫描ip地址的小程序
Apr 16 Python
Django模板Templates使用方法详解
Jul 19 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
python os模块常用的29种方法使用详解
Jun 02 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
python中Pexpect的工作流程实例讲解
Mar 02 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
php 中英文语言转换类
2011/09/07 PHP
数据库中排序的对比及使用条件详解
2012/02/23 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
python中实现定制类的特殊方法总结
2014/09/28 Python
使用Python生成随机密码的示例分享
2016/02/18 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
技校生自我鉴定
2013/12/08 职场文书
房地产项目策划书
2014/02/05 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
运输公司工作总结
2015/08/11 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
Python中如何处理常见报错
2022/01/18 Python