1. Task 概念及用法
Task,是 python 中與事件迴圈進行互動的一種主要方式。
建立 Task,意思就是把協程封裝成 Task 例項,並追蹤協程的 執行 / 完成狀態,用於未來獲取協程的結果。
Task 核心作用:在事件迴圈中新增多個併發任務;
具體來說,是透過 asyncio.create_task() 建立 Task,讓協程物件加入時事件迴圈中,等待被排程執行。
注意:Python 3.7 以後的版本支援 asyncio.create_task(),在此之前的寫法為 loop.create_task(),開發過程中需要注意程式碼寫法對不同版本 python 的相容性。
需要指出的是,協程封裝為 Task 後不會立馬啟動,當某個程式碼 await 這個 Task 的時候才會被執行。
當多個 Task 被加入一個 task_list 的時候,新增 Task 的過程中 Task 不會執行,必須要用 await asyncio.wait() 或 await asyncio.gather() 將 Task 物件加入事件迴圈中非同步執行。
一般在開發中,常用的寫法是這樣的:
-- 先建立 task_list 空列表;
-- 然後用 asyncio.create_task() 建立 Task;
-- 再把 Task 物件加入 task_list;
-- 最後使用 await asyncio.wait 或 await asyncio.gather 將 Task 物件加入事件迴圈中非同步執行。
1. Task 概念及用法
Task,是 python 中與事件迴圈進行互動的一種主要方式。
建立 Task,意思就是把協程封裝成 Task 例項,並追蹤協程的 執行 / 完成狀態,用於未來獲取協程的結果。
Task 核心作用:在事件迴圈中新增多個併發任務;
具體來說,是透過 asyncio.create_task() 建立 Task,讓協程物件加入時事件迴圈中,等待被排程執行。
注意:Python 3.7 以後的版本支援 asyncio.create_task(),在此之前的寫法為 loop.create_task(),開發過程中需要注意程式碼寫法對不同版本 python 的相容性。
需要指出的是,協程封裝為 Task 後不會立馬啟動,當某個程式碼 await 這個 Task 的時候才會被執行。
當多個 Task 被加入一個 task_list 的時候,新增 Task 的過程中 Task 不會執行,必須要用 await asyncio.wait() 或 await asyncio.gather() 將 Task 物件加入事件迴圈中非同步執行。
一般在開發中,常用的寫法是這樣的:
-- 先建立 task_list 空列表;
-- 然後用 asyncio.create_task() 建立 Task;
-- 再把 Task 物件加入 task_list;
-- 最後使用 await asyncio.wait 或 await asyncio.gather 將 Task 物件加入事件迴圈中非同步執行。