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

 更新时间:2021年12月16日 08:53:04   作者:三爷带你飞  
这篇文章主要为大家介绍了Python中获取协程返回值的四种方法的示例代码,文中的代码详细易懂,对我们学习Python有一定的帮助,需要的朋友可以了解一下

介绍

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

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

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

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

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

源码

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获取,本质是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获取协程返回值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 字符串操作详情

    Python 字符串操作详情

    这篇文章主要介绍了Python 字符串操作,所谓字符串,就是由0个或者多个字符组成的有限序列,字符串的字符可以是特殊符号、英文字母、中文字符、日文的平假名或片假名、希腊字母、Emoji字符等等。下面我们大家一起来学习文章详细内容吧
    2021-11-11
  • python爬虫爬取监控教务系统的思路详解

    python爬虫爬取监控教务系统的思路详解

    这篇文章主要介绍了python爬虫监控教务系统,主要实现思路是对已有的成绩进行处理,变为list集合,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2020-01-01
  • Python+wxPython实现一个简单的音乐播放器

    Python+wxPython实现一个简单的音乐播放器

    这篇文章主要为大家详细介绍了如何使用Python编程语言和wxPython模块创建一个简单的音乐播放器,文中的示例代码讲解详细,感兴趣的可以了解下
    2023-09-09
  • python系列 文件操作的代码

    python系列 文件操作的代码

    这篇文章主要介绍了python系列 文件操作的代码,主要是使用了python的open、read、write是些打开、读取、写入,导入numpy主要是用到数组操作,需要的朋友可以参考下
    2019-10-10
  • python3中zip()函数使用详解

    python3中zip()函数使用详解

    zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象.这个可迭代对象可以使用循环的方式列出其元素,若多个可迭代对象的长度不一致,则所返回的列表与长度最短的可迭代对象相同.
    2018-06-06
  • Playwright中如何保持登录状态

    Playwright中如何保持登录状态

    本文主要介绍了Playwright中如何保持登录状态,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 使用Gitee自动化部署python脚本的详细过程

    使用Gitee自动化部署python脚本的详细过程

    小编最近在自学python,在学习过程中有好多意向不到的收获,真的很开心,今天重点给大家分享使用Gitee自动化部署python脚本的详细过程,包括安装环境搭建及一些注意事项,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • python base64库给用户名或密码加密的流程

    python base64库给用户名或密码加密的流程

    这篇文章主要介绍了python base64库给用户名或密码加密,需要的朋友可以参考下
    2020-01-01
  • 在cmd中运行.py文件: python的操作步骤

    在cmd中运行.py文件: python的操作步骤

    今天小编就为大家分享一篇在cmd中运行.py文件: python的操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python pandas库读取excel/csv中指定行或列数据

    python pandas库读取excel/csv中指定行或列数据

    通过阅读表格,可以发现Pandas中提供了非常丰富的数据读写方法,下面这篇文章主要给大家介绍了关于python利用pandas库读取excel/csv中指定行或列数据的相关资料,需要的朋友可以参考下
    2022-02-02

最新评论