本文小編為大家詳細介紹“如何使用python的Task封裝協(xié)程”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“如何使用python的Task封裝協(xié)程”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了河東免費建站歡迎大家使用!
說明
1、Task是Future的子類,Task是對協(xié)程的封裝,我們把多個Task放在循環(huán)調(diào)度列表中,等待調(diào)度執(zhí)行。
2、Task對象可以跟蹤任務和狀態(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)的任務列表中,等待事件循環(huán)去執(zhí)行(默認是就緒狀態(tài))。 # 在調(diào)用 task_list = [ asyncio.create_task(func(), name="n1"), asyncio.create_task(func(), name="n2") ] print("main結(jié)束") # 當執(zhí)行某協(xié)程遇到IO操作時,會自動化切換執(zhí)行其他任務。 # 此處的await是等待所有協(xié)程執(zhí)行完畢,并將所有協(xié)程的返回值保存到done # 如果設置了timeout值,則意味著此處最多等待的秒,完成的協(xié)程返回值寫入到done中,未完成則寫到pending中。 done, pending = await asyncio.wait(task_list, timeout=None) print(done, pending) asyncio.run(main())
讀到這里,這篇“如何使用python的Task封裝協(xié)程”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。