繁体   English   中英

Python:使用 asyncio 模块等待 2 个独立任务的结果

[英]Python: use asyncio module to wait result for 2 independent tasks

对于 Python 3.4+,我可以使用asyncio来分派独立的任务。 在此处输入图片说明

现在,我有两个长期运行的独立函数。 两个函数都返回结果,那么我如何将两个结果收集到一个对象中,使用asyncio将这两个函数放在一个 IO 循环中。

import asyncio 

async def long_func1():
   await ...
   ...

async def long_func2():
   await ...
   ...

如果我得到你想要做的...

为了同时运行这两个函数,您可以使用asyncio.create_taskasyncio.wait来获取它们的结果。

看看下面的例子:

import sys
import asyncio

async def test_1():
    return sys._getframe().f_code.co_name

async def test_2():
    return sys._getframe().f_code.co_name


async def main():
    t1 = asyncio.create_task(test_1())
    t2 = asyncio.create_task(test_2())

    done, pending = await asyncio.wait([t1, t2])
    results = [d.result() for d in done]

    # The order of the finished function is unknown
    print(results)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
    loop.close()

它将运行两个函数并等待它们完成。

一旦他们done它会聚集在两者的结果done功能的results列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM