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获取协程返回值的四种方式详解的文章就介绍到这了,更多相关Python获取协程返回值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 使用协程爬取网页,计算网页数据大小
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)