千家信息网

Python获取协程返回值的方式有哪些

发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,这篇文章主要介绍"Python获取协程返回值的方式有哪些",在日常操作中,相信很多人在Python获取协程返回值的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2025年02月22日Python获取协程返回值的方式有哪些

这篇文章主要介绍"Python获取协程返回值的方式有哪些",在日常操作中,相信很多人在Python获取协程返回值的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"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获取协程返回值的方式有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0