Python篇-多进程与协程的理解与使用
来源:互联网 发布:淘宝刷手会受什么处罚 编辑:程序博客网 时间:2024/05/18 02:47
一 : 科普一分钟
尽管进程间是独立存在的,不能相互访问彼此的数据,但是在python中却存在进程间的通信方法,来帮助我们可以利用多核CPU也能共享数据.
对于多线程其实也是存在一些缺点的,不是任何场景我们都用多线程来完成并发处理任务,因为CPU操作线程,所以线程多了,对于计算机的资源消耗是十分严重的,多线程适合IO操作密集的任务,那么怎么办呢, 协程的出现帮我们解决了这个问题 ,协程是比线程更小的一个单位,但是它的作用却不容忽视.
二 : 多进程
1.多进程简单了解 :
进程之间是独立的,是操作系统自己来维护和管理的,python通过C接口起了一个进程,多进程可以充分的利用多核CPU
2. 多进程的创建 :
3. 多进程间的通信 :
进程间独立,如果想相互访问,就必须有一个中间翻译,下面提供了几种进程间通信的方法。
进程Queue
解析 :
Queue通信,相当于父进程赋值了一个Queue给子进程,子进程在这个Queue放好数据后,序列化一个中间翻译,然后在反序列化返回给父进程,
因为进程之间内存独立,不能传递对象传递的其实就是序列化的数据
Pipe
多进程还有一种数据传递方式叫管道原理和 Queue相同
4. 进程锁
虽然内存独立,但是即使是打印也会造成打印数据错误,为了防止进程间抢屏幕打印输出,加了进程锁。
5. 进程池
创建一个子进程相当于copy一份父进程内存数据,为了防止频繁创建,导致内存不足,所以有了进程池作为限制。
三 : 协程
1. 协程的简单了解 :
协程又称微线程,coroutne,协程是一种用户态的轻量级线程。通俗点讲就是周末我在家里休息,假如我先洗漱,再煮饭,再下载电影看会很慢,用了协程的效果就好比,我在下载电影的时候去点火煮饭,此时我马上洗漱,等我洗漱好了,饭也好了,吃完饭了,电影下好了,我可以看了。
2. 协程的创建和使用:
gevent 是一个三方库,可以轻松通过gevent实现并发同步或者异步编程。
解析:尝试运行发现,运行时间为Sleep最长的时间,也就是说协程能绕过IO,进行执行,极大的提高了效率.
IO(从硬盘上读一块数据,从网络读数据,从内存里读一块数据) 操作不占用CPU,计算占用CPU
3. 协程简单爬网页 :
4. 协程实现socketServer:
通过协程,我们可以写出一个socketServer,真正socketServer的底层是用多线程来实现,我们用写成写出的效率很高,而且非常节省内存
四 : 总结
协程的优点:
线程在单线程下切换,减少资源消耗
无需原子操作控制流,简化编程模型
高并发,高扩展,低成本.
无论是多进程,多线程还是协程在不同的场景用不同的模型才能高效的完成任务.
————广告时间————
马哥教育2017年Python自动化运维开发实战网络班12月3日开班,马哥联合BAT、豆瓣等一线互联网Python开发达人,根据目前企业需求的Python开发人才进行了深度定制,加入了大量一线互联网公司:大众点评、饿了么、腾讯等生产环境真是项目,课程由浅入深,从Python基础到Python高级,让你融汇贯通Python基础理论,手把手教学让你具备Python自动化开发需要的前端界面开发、Web框架、大监控系统、CMDB系统、认证堡垒机、自动化流程平台六大实战能力,让你从0开始蜕变成Hold住年薪20万的Python自动化开发人才。
扫描二维码领取学习资料
更多Python好文请点击【阅读原文】哦
↓↓↓
- Python篇-多进程与协程的理解与使用
- 多线程与多进程的理解
- 协程与线程和进程的关系理解
- 多线程与进程的理解
- 进程与线程的理解
- 进程与线程的理解
- 进程与线程的理解
- 孤儿进程与僵尸进程的理解
- Python的多线程与多进程实践
- Python的进程与线程
- python线程、进程与协程
- Python多线程与多进程
- Python多线程与多进程
- python多线程与多进程 超简单使用
- Linux进程理解与实践(三)进程终止函数和exec函数族的使用
- Linux进程理解与实践(三)进程终止函数和exec函数族的使用
- python进程与线程混合使用例子
- 理解进程与线程
- POJ 刷题系列:3299. Humidex
- Unity3d开发MOBA游戏类《王者荣耀》记录(一)
- 安卓开发(2):基本UI界面设计
- Find The Multiple-POJ-1426-BFS
- Play for Scala.pdf 英文原版 免费下载
- Python篇-多进程与协程的理解与使用
- Pyhton,字符串定义
- GAN生成的结果多样性不足怎么办?那就再添一个鉴别器!
- 求最长不重复子串
- Linux 系统开机启动项清理
- Xmanager + Ubuntu 实现远程gui
- 斐波那契 小解
- Deploying Nodedotjs.pdf 英文原版 免费下载
- Github一些整理