进程\线程\协程 三兄弟

首先我们来说一下进程、线程还有协程它们三个的区别?

  进程作为操作系统资源分配的最小单位,可以在进程和进程之间进行数据隔离,如果有特殊需要通过Manager进行进程间的数据共享,而线程才是执行程序,与CPU进行交互的最小单位,一个CPU同时只能与一个线程进行交互,所以CPU个数与线程数相等才能发挥多线程最大的优势,但是遗憾的时Python中以为有GIL锁的存在,并不能这么做,GIL锁的存在限制了在同一时间一个进程中只能有一个线程与CPU进行交互,但是这并不影响Python多线程进行IO操作的效率,因为IO操作并不占用CPU,如果是计算密集型,Python就没有办法了,只能是用多进程来提升程序的效率了.再说协程,协程在真正意义上并不是真实存在的,通过gevent框架利来实现协程,主要是为了解决阻塞问题,可以发挥线程的最大效率,不必让线程发出请求后傻傻的等,原理是让对一个线程进行分片,在执行是遇到IO操作就直接调用另一个模块greenlet的switch方法来切换代码块.实现高效率的多线程,不只有gevent可以实现协程,还有Twisted,这两个的底层原理都是基于时间循环实现的异步非阻塞框架.

  

posted on 2018-09-10 16:19 徐建0304 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Treasuremy/p/9620504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值