asyncio 的优势与缺点

环境假设

  1. >= Python 3.5
  2. Linux

优势

  1. 对异步 IO 任务异常好使
  2. 编程模型更加简单,负担比较小:
    1. 利用 asyncio 拿到一个 event loop
    2. 然后往这个 loop 中塞东西(协程)
  3. 操作系统看到的仍然是单线程,但是从宏观角度看到的是“多并发”(每个语言差不多都是这样:在用户态上实现一套多线程模型 )

缺点

  1. 生态不成熟( 虽然有 aio-libs),要是 requests 这样的库也有对应的实现就好了(流行度也要高)
  2. 有一个前提假定:一个 App 必须从前到后都是异步的,这对许多历史遗留项目是有负担的

与 gevent + Python 2 对比

  1. 很多项目都是 Python 2 based,使用 gevent 效果很明显
  2. 唯一担心的地方是:gevent 会有很多 patch (hack 标准库),而我们看到的是一个黑盒子,难免不放心
  3. gevent 的效率不一定比 asyncio + async def 那一套的效率低哦

(其实我有点粉 gevent,我们的项目大量使用 gevent,效果还不错,好用为啥不用!)

怎么使用

  1. asyncio 作为我们的框架(我比较喜欢标准库有的东西),async def/await 作为基本的设计手段
  2. 多多使用 aio-libs 中的各种 lib (必须从头到尾都异步啊!)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值