Python asyncio文檔閱讀摘要

      文檔地址:https://docs.python.org/3/library/asyncio.htmlhtml

      文檔第一句話說得很明白,asyncio是單線程併發,這種event loop架構是不少新型異步併發技術的選擇,包括Node.js、Spring Webflux等 過上篇提的Golang不是,並且有gopher不太認可event loop。python

      1、Base Event Loop
設計模式

  一、關於event loop:它是asyncio的中心執行調度設施,它有如下功能:服務器

           1.一、註冊、調用、取消回調函數的執行網絡

           1.二、爲各類通訊通道提供客戶服務器雙端通信機制架構

           1.三、啓動子進程,並使其與外部程序通訊的通信關聯起來。併發

           1.四、把耗時任務微弱給線程池異步

      二、Call,絕大多數回調函數不接受關鍵字參數,若是你想給回調函數傳參,那隻能用functools.partial()
async

      三、延遲調用:event loop 有它本身的內部時鐘用來計算延遲時間。函數

      四、Futures: Promise設計模式的實現

      五、Tasks

      六、Client-end: Creating connections

      七、Server-end:Creating listening connections

      八、觀察文件描述符

      九、低階Socket操做

     十、解析主機名

      十一、鏈接通道

      十二、Unix信號

      1三、Executor:執行器,在線程池裏或者進程池裏調用一個函數,event loop默認使用線程池

      1四、錯誤處理

      1五、debug模式

      1六、Server:Socket Server

      1七、Handle:能夠用來取消一個函數的執行

      1八、Event Loop代碼樣例

     2、Event Loop

      一、Event loop的默認策略及設置,以及跨平臺的一些問題

     3、任務和協程

      一、協程:iscoroutinefunction()iscoroutine()

      二、任務:調度協程的執行,把它封裝進future,一個任務是Future的子類

     4、通信和協議

      一、asyncio用Transport抽象各類類型通訊通道,asyncio目前支持長度transport有TCP、UDP、SSL和子進程通道。

      二、協議:asyncio提供了一個基類用來實現本身的網絡協議

     5、基於協程的流API

     6、子進程:高階API與低階API

     7、同步操做元語:與threading的API設計相近

         一、鎖:Lock、Event、Conditon

         二、信號量

     8、消息隊列

         一、Queue:用來協調生產者和消費者協程

     9、asyncio開發技巧:

相關文章
相關標籤/搜索