python Task在協(xié)程調(diào)用實(shí)例講解
Tasks用于并發(fā)調(diào)度協(xié)程,通過asyncio.create_task(協(xié)程對(duì)象)創(chuàng)建Task對(duì)象,使協(xié)程能夠加入事件循環(huán),等待調(diào)度執(zhí)行。除使用asyncio.create_task()函數(shù)外,還可使用低級(jí)loop.create_task()或ensure_future()函數(shù)。推薦使用手動(dòng)實(shí)例Task對(duì)象。
2、使用注意Python3.7中添加到asyncio.create_task函數(shù)。在Python3.7之前,可以使用低級(jí)asyncio.ensure_future函數(shù)。
3、實(shí)例import asyncio async def func(): print(1) await asyncio.sleep(2) print(2) return '返回值' async def main(): print('main開始') # 創(chuàng)建協(xié)程,將協(xié)程封裝到一個(gè)Task對(duì)象中并立即添加到事件循環(huán)的任務(wù)列表中,等待事件循環(huán)去執(zhí)行(默認(rèn)是就緒狀態(tài))。 task1 = asyncio.create_task(func()) # 創(chuàng)建協(xié)程,將協(xié)程封裝到一個(gè)Task對(duì)象中并立即添加到事件循環(huán)的任務(wù)列表中,等待事件循環(huán)去執(zhí)行(默認(rèn)是就緒狀態(tài))。 task2 = asyncio.create_task(func()) print('main結(jié)束') # 當(dāng)執(zhí)行某協(xié)程遇到IO操作時(shí),會(huì)自動(dòng)化切換執(zhí)行其他任務(wù)。 # 此處的await是等待相對(duì)應(yīng)的協(xié)程全都執(zhí)行完畢并獲取結(jié)果 ret1 = await task1 ret2 = await task2 print(ret1, ret2)asyncio.run(main())
知識(shí)點(diǎn)擴(kuò)展:
python asyncio 協(xié)程調(diào)用task步驟
import asyncioasync def compute(x, y): print('Compute %s + %s ...' % (x, y)) await asyncio.sleep(1.0) return x + yasync def print_sum(x, y): result = await compute(x, y) print('%s + %s = %s' % (x, y, result))loop = asyncio.get_event_loop()loop.run_until_complete(print_sum(1, 2))loop.close()
到此這篇關(guān)于python Task在協(xié)程調(diào)用實(shí)例講解的文章就介紹到這了,更多相關(guān)python Task如何在協(xié)程調(diào)用內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 使用本機(jī)IIS?Express開發(fā)Asp.Net?Core應(yīng)用圖文教程2. PHP基礎(chǔ)之生成器4——比較生成器和迭代器對(duì)象3. PHP對(duì)接阿里云虛擬號(hào)的實(shí)現(xiàn)(號(hào)碼隱私保護(hù))4. HTML iframe標(biāo)簽用法案例詳解5. HTML基礎(chǔ)知識(shí)總結(jié)6. HTML-Canvas的優(yōu)越性能以及實(shí)際應(yīng)用7. intellij idea寫Python教程8. PHP文件運(yùn)行步驟以及數(shù)據(jù)庫的連接代碼9. CSS單標(biāo)簽實(shí)現(xiàn)復(fù)雜的棋盤布局10. Vue+ssh框架實(shí)現(xiàn)在線聊天

網(wǎng)公網(wǎng)安備