Asynchronous IO (async IO) 是一種異步編程設計,並在 Python 的 asyncio
模塊中得到了支持,並可以利用 async
/await
兩個定義關鍵字定義協程,通過 asyncio
提供運行和管理協程的基礎和 API。
通常來說,大多數編程語言都有遵循所謂的“子例程”調用模型的方法。在此模型中,每次調用函數被稱為執行,將移動到該函數的開始,然後繼續直到達到該函數的末尾(或 return
語句),此時執行將立即移至功能之後的點進行調用,以後對該功能的任何調用都是獨立的,該次調用在開始時將再次啟動。
但是,有一個替代模型的代碼執行模型,稱為 協程(coroutine)調用模型。在此調用模型中,該方法(稱為 coroutine )將執行回到調用者有一種新方法:而不是返回它可以“yield”控制。當 coroutine 的“yields”執行在被調用後立即移回了點時,但是對 coroutine的未來調用不會在開始時再次開始,相反,他們繼續從最近停止的執行中繼續進行。
這種方式控制可以在調用代碼和 coroutine
代碼之間來回執行,如下圖所示:
import asyncioimport timeasync def main(): print(f'{time.ctime()} Hello!') await asyncio.sleep(1.0) print(f'{time.ctime()} See you again!')asyncio.run(main())
運行結果:
$ python asynciodemo.py Sat Jul 9 23:19:40 2022 Hello!Sat Jul 9 23:19:41 2022 See you again!
asyncio
提供了一個 run()
函數來執行 async def
函數,然後從那裡調用的所有其他協程,如 main()
函數中的 sleep()
函數。
參考鏈接:
Async IO in Python: A Complete Walkthrough