这篇文章主要介绍“Python获取协程返回值的方式有哪些”,在日常操作中,相信很多人在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获取协程返回值的方式有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。