Python的协程

阿里云1000元通用代金券点此领取

协程,是一种用户态的线程
协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器的上下文和栈。
协程一定是在单线程里运行的,
yield函数就是一个协程

协程是由用户控制:在单线程里协程能实现并发操作,但是串行的
线程是CPU控制:硬件控制,单核CPU运行多个线程并发,实际上也是串行的

协程的效率比多线程切换高

协程的好处:
1.无需线程上下文切换开销
2.无需原子操作锁定及同步的开销
3.方便切换控制流,简化编程模型
4.高并发+高扩展+低成本:一个CPU支持上万的协程,很适合高并发处理
缺点:
1.无法利用多核资源:协程的本质是个单线程,不能将单个CPU的多个核用上,协程需要和进程配合才能运行在多CPU上,但绝大时间编程都没有必要,除非CPU密集型应用才有可能用到
2.进行阻塞(blocking)操作(如IO时)会阻塞整个程序 #多线程不影响
Gevent模块可以解决阻塞这个问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值