可參見python官方文檔:https://docs.python.org/zh-cn/3.7/library/asyncio-eventloop.html
一、事件循環
事件循環:是python異步編程中重要的一個環節;可以理解未就是一個死循環,這個死循環會去檢測並執行某些代碼。
例如:
# 偽代碼 列表 = [任務1,任務二,任務三] while True: 可執行的任務列表,已完成的任務列表 = 去任務列表檢測所有任務,將“可執行”和“已完成”的任務返回 for 就緒任務 in 就緒任務列表: 執行就緒恩物 for 已完成的任務 in 已完成的任務列表: 在任務列表中移除已完成的任務 如果任務列表中所有任務完成,則終止循環
python代碼如下:
import asyncio # 生成一個事件循環 loop = asyncio.get_event_loop() # 將任務放到任務列表去執行 loop.run_until_complate(tasks)
二、攜程函數與攜程對象
攜程函數:python3.5之后使用 async def 函數名,定義的函數就叫攜程函數
攜程對象:執行攜程函數 函數名(),得到的就是攜程對象
async def func(): print("哈哈哈哈哈") # 調用攜程函數不會執行該函數內部代碼 result = func()
如何讓攜程函數得到執行:
如果要運行攜程對象,必須將攜程對象交給事件循環來處理
import asyncio
async def func(): print("哈哈哈") result = func()
loop = asyncio.get_event_loop() loop.run_until_complate(result)
# python3.7之后有更簡單的方法
asyncio.run(result)