程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python Asyncio 初探:基本概念和模式

編輯:Python

Asynchronous IO (async IO) 是一種異步編程設計,並在 Python 的 asyncio 模塊中得到了支持,並可以利用 async/await 兩個定義關鍵字定義協程,通過 asyncio 提供運行和管理協程的基礎和 API。


子例程和協程

通常來說,大多數編程語言都有遵循所謂的“子例程”調用模型的方法。在此模型中,每次調用函數被稱為執行,將移動到該函數的開始,然後繼續直到達到該函數的末尾(或 return 語句),此時執行將立即移至功能之後的點進行調用,以後對該功能的任何調用都是獨立的,該次調用在開始時將再次啟動。


但是,有一個替代模型的代碼執行模型,稱為 協程(coroutine)調用模型。在此調用模型中,該方法(稱為 coroutine )將執行回到調用者有一種新方法:而不是返回它可以“yield”控制。當 coroutine 的“yields”執行在被調用後立即移回了點時,但是對 coroutine的未來調用不會在開始時再次開始,相反,他們繼續從最近停止的執行中繼續進行。


這種方式控制可以在調用代碼和 coroutine 代碼之間來回執行,如下圖所示:



ayncio 版Hello 程序


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


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved