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小程序
Aug 15 Python
Python中的with...as用法介绍
May 28 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
Python创建xml文件示例
Mar 22 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
python爬虫实现POST request payload形式的请求
Apr 30 Python
详解Python中string模块除去Str还剩下什么
Nov 30 Python
用python对excel查重
Dec 07 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 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 的 __FILE__ 常量
2007/01/15 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
PHP中SESSION过期设置
2021/03/09 PHP
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
php跨域调用json的例子
2013/11/13 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
js实现车辆管理系统
2020/08/26 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
python提取内容关键词的方法
2015/03/16 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
合作与交流自我评价
2015/03/09 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
centos7安装mysql5.7经验记录
2022/05/02 Servers