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 (必須從頭至尾都異步啊!)
相關文章
相關標籤/搜索