python,asyncio
asyncio 是以協程的模式來編寫併發的庫,使用 async/await 語法。在 IO密集型 的網絡編程裏,異步IO 協程 省去了開闢新的線程和進程的開銷。asyncio 是 Python3.4 版本引入到標準庫,python3.5 加入了 async/await 特性。下面我們就來分享一下運行協程的幾種方式。
使用 async 聲明協程
async def asyncTask():
# 協程休眠
await asyncio.sleep(1)
print(time.strftime('%X'))
運行協程的幾種方式:
1、asyncio.run() 函數用來在非協程函數中調用協程
asyncio.run(asyncTask())
2、使用 await 等待一個協程。
await asyncTask()
3、asyncio.create_task() 用函數將協程打包爲一個 Task 排入日程準備執行,返回 asyncio.Task 對象。
此函數 在 Python 3.7 中被加入。
task1 = asyncio.create_task(asyncTask1())task2 = asyncio.create_task(asyncTask2())await task1await task2
4、使用 asyncio.gather() 函數來併發多個協程。
tasks = asyncio.gather(asyncTask1(), asyncTask2())tasks2 = asyncio.gather(*[asyncTask1(), asyncTask2()])await tasksawait tasks2
具體示例:
import asyncioimport time# 定義協程任務async def asyncTask1():
# 協程休眠
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")
關於運行協程的方式,我們就瞭解到這啦!
-
qq怎麼恢復被退出的羣
21世紀是互聯網信息時代,互聯網聊天軟件發揮重要信息溝通作用,一些我們不需要的聊天羣會選擇退出,也會由於不小心或者別的原因退出了qq羣,那麼退出的聊天羣該怎麼恢復呢?退出的qq羣只有羣主能進行恢復操作,管理員不能恢復,而且只能恢復被羣主或管理員刪除的羣成員。而...
-
怎麼看蘋果手機型號
1、在蘋果手機找到“設置”圖標,點擊進入。2、進入設置頁面後,從下往上滑動,找到“通用”,點擊進入。3、進入通用頁面後,找到“關於本機”點擊進入。4、進入關於本機頁面後,會顯示關於手機的詳細信息,其中就有“型號名稱”。5、顯示的型號名稱,就是蘋果手機的型號。...
-
手機殼髒了該怎麼清洗
1、硅膠手機殼的清洗方法。先找一個乾的布並放在水裏清洗一下,撈出來之後再擰乾,放在陽臺上曬曬,等曬得差不多了我們就可以用它仔仔細細地把手機殼清洗一次。如果發現你的手機殼上有污點的話,或者是灰塵,都可以用小牙刷沾上一點牙膏來清洗。如果你的手機殼上有膠水...
-
公交車多功能支付終端刷卡機怎樣才能刷多種,掃碼支付公交費一卡通多功能刷卡機
1、乘客乘車刷卡時,將手機支付費用二維碼靠近刷卡設備(車載刷卡收費機,下文簡稱車載機)的掃描區,車載機對二維碼進行識別後,識別通過後進行扣費,上述操作完成,車載機完成了對乘客的收費,乘客可以搭乘汽車。2、乘客刷卡乘車後,車載機主機完成相應的扣款並存儲相應的消費...