Python獲取協(xié)程返回值的四種方式詳解
介紹
獲取協(xié)程返回值的四種方式:
1、通過ensure_future獲取,本質(zhì)是future對象中的result方
2、使用loop自帶的create_task, 獲取返回值
3、使用callback, 一旦await地方的內(nèi)容運行完,就會運行callback
4、使用partial這個模塊向callback函數(shù)中傳入值
源碼
import asyncio from functools import partial async def talk(name): print(f"talk function run.") await asyncio.sleep(0.1) return f"{name} talk!" async def sleep(name): print(f"sleep function run.") await asyncio.sleep(0.1) return f"{name} sleep!" def callback(name): print(f"主動拋出接收:{name}") if __name__ == "__main__": # 通過ensure_future獲取,本質(zhì)是future對象中的result方法 # loop = asyncio.get_event_loop() # get_future1 = asyncio.ensure_future(talk("Dog")) # get_future2 = asyncio.ensure_future(sleep("Cat")) # loop.run_until_complete(get_future1) # loop.run_until_complete(get_future2) # print(get_future1.result()) # print(get_future2.result()) # 使用loop自帶的create_task, 獲取返回值 # loop = asyncio.get_event_loop() # task1 = loop.create_task(talk("Dog")) # task2 = loop.create_task(sleep("Cat")) # loop.run_until_complete(task1) # loop.run_until_complete(task2) # print(task1.result()) # print(task2.result()) # 使用callback, 一旦await地方的內(nèi)容運行完,就會運行callback # loop = asyncio.get_event_loop() # task1 = loop.create_task(talk("Dog")) # task2 = loop.create_task(sleep("Cat")) # task1.add_done_callback(callback) # task2.add_done_callback(callback) # loop.run_until_complete(task1) # loop.run_until_complete(task2) # print(task1.result()) # print(task2.result()) # 使用partial這個模塊向callback函數(shù)中傳入值 loop = asyncio.get_event_loop() task1 = loop.create_task(talk("Dog")) task2 = loop.create_task(talk("Cat")) task1.add_done_callback(partial(callback)) task2.add_done_callback(partial(callback)) loop.run_until_complete(task1) loop.run_until_complete(task2) print(task1.result()) print(task2.result())
依次執(zhí)行結(jié)果
通過ensure_future獲取,本質(zhì)是future對象中的result方法
使用loop自帶的create_task, 獲取返回值
用callback, 一旦await地方的內(nèi)容運行完,就會運行callback
使用partial這個模塊向callback函數(shù)中傳入值
到此這篇關(guān)于Python獲取協(xié)程返回值的四種方式詳解的文章就介紹到這了,更多相關(guān)Python獲取協(xié)程返回值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python爬蟲爬取監(jiān)控教務(wù)系統(tǒng)的思路詳解
這篇文章主要介紹了python爬蟲監(jiān)控教務(wù)系統(tǒng),主要實現(xiàn)思路是對已有的成績進行處理,變?yōu)閘ist集合,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2020-01-01Python+wxPython實現(xiàn)一個簡單的音樂播放器
這篇文章主要為大家詳細介紹了如何使用Python編程語言和wxPython模塊創(chuàng)建一個簡單的音樂播放器,文中的示例代碼講解詳細,感興趣的可以了解下2023-09-09python?pandas庫讀取excel/csv中指定行或列數(shù)據(jù)
通過閱讀表格,可以發(fā)現(xiàn)Pandas中提供了非常豐富的數(shù)據(jù)讀寫方法,下面這篇文章主要給大家介紹了關(guān)于python利用pandas庫讀取excel/csv中指定行或列數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-02-02