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装饰器使用实例:验证参数合法性
Jun 24 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
Python Flask基础教程示例代码
Feb 07 Python
python Web开发你要理解的WSGI & uwsgi详解
Aug 01 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
Python利用scapy实现ARP欺骗的方法
Jul 23 Python
Python交互式图形编程的实现
Jul 25 Python
django中使用POST方法获取POST数据
Aug 20 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
python和JavaScript哪个容易上手
Jun 23 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
php通过COM类调用组件的实现代码
2012/01/11 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
装潢设计专业推荐信模板
2013/11/26 职场文书
公司人力资源的自我评价
2014/01/02 职场文书
运动会班级口号
2014/06/09 职场文书
吴仁宝观后感
2015/06/09 职场文书
同意报考证明
2015/06/17 职场文书
门卫管理制度范本
2015/08/05 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
导游词之山东孔庙
2019/11/04 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
SpringRetry重试框架的具体使用
2021/07/25 Java/Android
Python与C++中梯度方向直方图的实现
2022/03/17 Python
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏