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编写网页爬虫脚本并实现APScheduler调度
Jul 28 Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 Python
Django中对通过测试的用户进行限制访问的方法
Jul 23 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
python3对接mysql数据库实例详解
Apr 30 Python
为什么说Python可以实现所有的算法
Oct 04 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
python时间日期操作方法实例小结
Feb 06 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 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图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
React key值的作用和使用详解
2018/08/23 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
python二分查找算法的递归实现方法
2016/05/12 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
python访问hdfs的操作
2020/06/06 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
什么是事务?为什么需要事务?
2012/01/09 面试题
毕业生找工作的求职信范文
2013/12/24 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
表扬通报怎么写
2015/01/16 职场文书
艺术节开幕词
2015/01/28 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
停电通知范文
2015/04/16 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android