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的迭代器和生成器
Jul 29 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
python 输出上个月的月末日期实例
Apr 11 Python
python实现归并排序算法
Nov 22 Python
python ChainMap的使用和说明详解
Jun 11 Python
python Tkinter的图片刷新实例
Jun 14 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
Python连续赋值需要注意的一些问题
Jun 03 Python
python中subplot大小的设置步骤
Jun 28 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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
用Flash图形化数据(一)
2006/10/09 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
Js面试算法详解
2018/04/08 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
Python3 操作符重载方法示例
2017/11/23 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
北京天润融通.net面试题笔试题
2012/02/20 面试题
护理自荐信
2013/10/22 职场文书
三下乡个人总结
2015/03/04 职场文书
Go语言应该什么情况使用指针
2021/07/25 Golang