这篇教程Python获取协程返回值的四种方式详解写得很实用,希望能帮到您。
介绍获取协程返回值的四种方式: 1、通过ensure_future获取,本质是future对象中的result方 2、使用loop自带的create_task, 获取返回值 3、使用callback, 一旦await地方的内容运行完,就会运行callback 4、使用partial这个模块向callback函数中传入值
源码import asynciofrom functools import partialasync 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获取,本质是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地方的内容运行完,就会运行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函数中传入值 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())
依次执行结果通过ensure_future获取,本质是future对象中的result方法 
使用loop自带的create_task, 获取返回值 
用callback, 一旦await地方的内容运行完,就会运行callback 
使用partial这个模块向callback函数中传入值 
到此这篇关于Python获取协程返回值的四种方式详解的文章就介绍到这了,更多相关Python获取协程返回值内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! 用python画圣诞树三种代码示例介绍 Python如何绘制概率分布直方图浅析 |