文檔地址: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開發技巧: