掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
說明

1、task是Future的子類,Task是對協(xié)程的封裝,我們把多個Task放在循環(huán)調(diào)度列表中,等待調(diào)度執(zhí)行。
2、Task對象可以跟蹤任務(wù)和狀態(tài)。Future(Task是Futrue的子類)為我們提供了異步編程中最終結(jié)果的處理(Task類還具有狀態(tài)處理功能)。
3、把協(xié)程封裝成Task,加入一個隊列等待調(diào)用。剛創(chuàng)建Task的時候不執(zhí)行,遇到await就執(zhí)行。
實例
import asyncio
async def func():
print(1)
await asyncio.sleep(2)
print(2)
return "返回值"
async def main():
print("main開始")
# 創(chuàng)建協(xié)程,將協(xié)程封裝到Task對象中并添加到事件循環(huán)的任務(wù)列表中,等待事件循環(huán)去執(zhí)行(默認(rèn)是就緒狀態(tài))。
# 在調(diào)用
task_list = [
asyncio.create_task(func(), name="n1"),
asyncio.create_task(func(), name="n2")
]
print("main結(jié)束")
# 當(dāng)執(zhí)行某協(xié)程遇到IO操作時,會自動化切換執(zhí)行其他任務(wù)。
# 此處的await是等待所有協(xié)程執(zhí)行完畢,并將所有協(xié)程的返回值保存到done
# 如果設(shè)置了timeout值,則意味著此處最多等待的秒,完成的協(xié)程返回值寫入到done中,未完成則寫到pending中。
done, pending = await asyncio.wait(task_list, timeout=None)
print(done, pending)
asyncio.run(main())
以上就是python中Task封裝協(xié)程的方法,希望對大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)Python教程

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流