Python 多进程和数据传递的理解


Posted in Python onOctober 09, 2017

Python 多进程和数据传递的理解

python不仅线程用的是系统原生线程,进程也是用的原生进程

进程的用法和线程大同小异

import multiprocessing 
 
p = multiprocessing.Process(target=fun,args=())

线程的基本方法在进程中都能够使用

但是进程和线程中有一个明显的区别:可以实现多核的运用

python本身会启动一个主进程,并且拥有一个主线程把主进程看做一家之主,那主线程也是他本身,其他线程就相当于老婆们
而进程,长大了的儿子们,线程固然是不能分割的,一家人还是要团结,但是儿子自家的事务,老子却也不能插手,所以,一家只能占用一个CPU实现单核运用的话,生多个儿子那必然就实现了多核运用

GIL锁住的,只是一个进程,让一家人团结

但是一个进程只有这么一把全量锁,线程不能单独跑,那就打包一起跑

多进程就这样完成了一般语言中多线程的优化

数据传递

多线程,多进程中总有要协同的工作,都涉及数据的交互,不过交互方式有些不同

信息进行传递的时候,为了不阻塞执行一般会将数据放入对列当中而不是直接返回

线程中,由于都属于同一个进程,定义一个全局的队列在各线程中就能够压入数据

进程可能运行在不同的CPU上,因此,相互间的传递不能在全局定义,只能通过创建时进行传入

内部操作:传入的队列实际上并不是将引用传入,然后直接操作队列,这毕竟是不同的CPU上的工作

队列的传入实际上是队列拷贝的传入,通过pickle拷贝后进行传入,然后再pickle将数据传回

import multiprocessing 
 
multiprocessing.Queue()

线程和进程都有不同的队列对象,以实现不同的数据交互,不能错位使用

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python处理圆角图片、圆形图片的例子
Apr 25 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
Flask之pipenv虚拟环境的实现
Nov 26 Python
python opencv如何实现图片绘制
Jan 19 Python
如何通过python实现全排列
Feb 11 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
python中sys模块的介绍与实例
Apr 17 Python
Python 制作自动化翻译工具
Apr 25 Python
Python 加密的实例详解
Oct 09 #Python
Python 3实战爬虫之爬取京东图书的图片详解
Oct 09 #Python
Python3实战之爬虫抓取网易云音乐的热门评论
Oct 09 #Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 #Python
Python引用传值概念与用法实例小结
Oct 07 #Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 #Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 #Python
You might like
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
使用PHP开发留言板功能
2019/11/19 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
python缩进区别分析
2014/02/15 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
台湾三立电视电商平台:电电购
2019/09/09 全球购物
员工年终演讲稿
2014/01/03 职场文书
入党自我评价优缺点
2014/01/25 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
学校交通安全责任书
2014/08/25 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
检讨书范文300字
2015/01/28 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS