开发者

Python获取协程返回值的四种方式详解

开发者 https://www.devze.com 2022-12-06 13:57 出处:网络 作者: 三爷带你飞
目录介绍源码依次执行结果介绍 获取协程返回值的四种方式: 1、通过ensure_future获取,本质是future对象中的result方
目录
  • 介绍
  • 源码
  • 依次执行结果

介绍

获取协程返回值的四种方式:

1、通过ensure_future获取,本质是future对象中的result方

2、使用loop自带的create_task, 获取返回值

3、使用callback, 一旦await地方的内容运行完,就会运行callback

4、使用partial这个模块向callback函数中传入值

源码

import asyncio
from functools import pahttp://www.cppcns.comrtial


async def tal编程客栈k(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获取,本质是fu编程客栈ture对象中的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"))
    # ta编程客栈sk2 = loop.create_task(sleep("Cat"))
    # task1.add_done_callbachttp://www.cppcns.comk(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方法

Python获取协程返回值的四种方式详解

使用loop自带的create_task, 获取返回值

Python获取协程返回值的四种方式详解

用callback, 一旦await地方的内容运行完,就会运行callback

Python获取协程返回值的四种方式详解

使用partial这个模块向callback函数中传入值

Python获取协程返回值的四种方式详解

到此这篇关于python获取协程返回值的四种方式详解的文章就介绍到这了,更多相关Python获取协程返回值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号