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 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
微信跳一跳辅助python代码实现
Jan 05 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
使用python批量化音乐文件格式转换的实例
Jan 09 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
详解python日志输出使用配置文件格式
Feb 10 Python
Python - 10行代码集2000张美女图
May 23 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 Python
基于python定位棋子位置及识别棋子颜色
Jul 26 Python
python缺失值填充方法示例代码
Dec 24 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函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
input按钮的事件处理大全
2010/12/10 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
JavaSript中变量的作用域闭包的深入理解
2014/05/12 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
python删除列表内容
2015/08/04 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
中学教师个人总结
2015/02/10 职场文书
春节随笔
2015/08/15 职场文书
MySQL池化框架学习接池自定义
2022/07/23 MySQL