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

作者:三爷带你飞 时间:2023-10-03 15:13:21 

介绍

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

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方法

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

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

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

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

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

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

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

来源:https://blog.csdn.net/hzblucky1314/article/details/121964346

标签:Python,协程,返回值
0
投稿

猜你喜欢

  • 如何使用pandas读取txt文件中指定的列(有无标题)

    2022-04-25 15:30:18
  • python学习笔记之调用eval函数出现invalid syntax错误问题

    2023-11-03 01:48:30
  • Python使用jupyter notebook查看ipynb文件过程解析

    2021-07-25 20:26:30
  • 通向MySQL神秘王国的图形化之路

    2008-12-08 13:43:00
  • java数据库开发之JDBC基础使用方法及实例详解

    2024-01-21 04:37:00
  • Python中函数带括号和不带括号的区别及说明

    2023-01-23 05:23:28
  • Oracle 正则表达式实例详解

    2024-01-25 23:43:01
  • numpy拼接矩阵的实现

    2021-02-09 06:35:07
  • 使用Python对Csv文件操作实例代码

    2023-04-17 23:50:57
  • Python字符编码与函数的基本使用方法

    2023-11-29 17:01:30
  • javascript事件冒泡实例分析

    2023-07-02 05:29:58
  • MySQL的全局锁和表级锁的具体使用

    2024-01-22 01:04:55
  • mysql下mysql-udf-http效率测试小记

    2024-01-16 15:14:21
  • python3+selenium实现qq邮箱登陆并发送邮件功能

    2023-02-04 17:54:23
  • Python Opencv中基础的知识点

    2023-06-08 21:10:48
  • Python学习之路之pycharm的第一个项目搭建过程

    2022-01-14 23:16:52
  • 属性与 @property 方法让你的python更高效

    2023-02-02 08:20:18
  • 浅谈python已知元素,获取元素索引(numpy,pandas)

    2023-08-04 16:01:00
  • 吐血推荐珍藏的Visual Studio Code插件(推荐)

    2023-02-09 08:58:31
  • python多进程共享变量

    2023-08-30 07:40:53
  • asp之家 网络编程 m.aspxhome.com