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编程过程中用单元测试法调试代码的介绍
Apr 02 Python
详解Python编程中包的概念与管理
Oct 16 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
Python绘制热力图示例
Sep 27 Python
python 字典套字典或列表的示例
Dec 16 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
Python实现一个简单的毕业生信息管理系统的示例代码
Jun 08 Python
pycharm 实现调试窗口恢复
Feb 05 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
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
PHP调用其他文件中的类
2018/04/02 PHP
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
python实现最小二乘法线性拟合
2019/07/19 Python
wxpython绘制音频效果
2019/11/18 Python
运行Python编写的程序方法实例
2020/10/21 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
生日邀请函范文
2014/01/13 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
网络编辑职责
2014/03/01 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
一文简单了解MySQL前缀索引
2022/04/03 MySQL