python協(xié)程庫asyncio的運行方式有哪些?我們一起了解一下吧!
asyncio 是以協(xié)程的模式來編寫并發(fā)的庫,使用 async/await 語法。在 IO密集型 的網絡編程里,異步IO 協(xié)程 省去了開辟新的線程和進程的開銷。asyncio 是 Python3.4 版本引入到標準庫,python3.5 加入了 async/await 特性。下面我們就來分享一下運行協(xié)程的幾種方式。
使用 async 聲明協(xié)程
async def asyncTask():
# 協(xié)程休眠
await asyncio.sleep(1)
print(time.strftime('%X'))
運行協(xié)程的幾種方式:
1、asyncio.run() 函數用來在非協(xié)程函數中調用協(xié)程
asyncio.run(asyncTask())
2、使用 await 等待一個協(xié)程。
await asyncTask()
3、asyncio.create_task() 用函數將協(xié)程打包為一個 Task 排入日程準備執(zhí)行,返回 asyncio.Task 對象。
此函數 在 Python 3.7 中被加入。
task1 = asyncio.create_task(asyncTask1())task2 = asyncio.create_task(asyncTask2())await task1await task2
4、使用 asyncio.gather() 函數來并發(fā)多個協(xié)程。
tasks = asyncio.gather(asyncTask1(), asyncTask2())tasks2 = asyncio.gather(*[asyncTask1(), asyncTask2()])await tasksawait tasks2
具體示例:
import asyncioimport time# 定義協(xié)程任務async def asyncTask1():
# 協(xié)程休眠
await asyncio.sleep(1)
print(time.strftime('%X'), 1)async def asyncTask2():
await asyncio.sleep(2)
print(time.strftime('%X'), 2)async def main():
task1 = asyncio.create_task(asyncTask1())
task2 = asyncio.create_task(asyncTask2())
tasks = asyncio.gather(asyncTask1(), asyncTask2())
tasks2 = asyncio.gather(*[asyncTask1(), asyncTask2()]) await tasks await tasks2 await task1 await task2
print(time.strftime('%X'), "start")
asyncio.run(main())
print(time.strftime('%X'), "end")
關于運行協(xié)程的方式,我們就了解到這啦!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com