您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Python获取协程返回值的四种方式详解

51自学网 2022-02-21 10:45:12
  python
这篇教程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如何绘制概率分布直方图浅析
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。