2019-04-01

最近在学习协程。

在百度上看了很多资料,先来介绍下协程吧。在这里把学习到的整理下。

协程就是一个用户态的轻量级的线程。

协程的好处:

跨平台

跨体系架构

无需线程上下文切换的开销

无需原子操作锁定及同步的开销

方便切换控制流,简化编程模型

高并发+高扩展性+低成本:一个CPU支持上万的协程都不是问题。所以很适合用于高并发处理。

缺点:

无法利用多核资源:协程的本质是个单线程,它不能同时将 单个CPU 的多个核用上,协程需要和进程配合才能运行在多CPU上.当然我们日常所编写的绝大部分应用都没有这个必要,除非是cpu密集型应用。

进行阻塞(Blocking)操作(如IO时)会阻塞掉整个程序:这一点和事件驱动一样,可以使用异步IO操作来解决。

为了能更好的证明协程在性能方面的强大之处,首先我用flask模拟一个慢请求:


这样就模拟一个慢的响应了。

首先我用单线程来模拟。


下面我们用协程来完成协程来玩成。

这里要用到asyncio和aiohttp这两个库,然后我们来比较下运行时间。


才3秒多 ,效果可想而知。

你可能感兴趣的:(2019-04-01)