像node.js async.parallel一样,由python协程生成字典结果

时间:2019-03-05 08:30:12

标签: python-3.x python-asyncio

我想用python编写字典,就像下面的node.js代码一样:

babel

上面执行两个并行的任务,并返回包含带有'html'和'data'的键的结果到标志。

我想在pytnon中做同样的事情,但是我不知道如何通过asyncio做到这一点,请参见以下代码:

@babel/preset-typescript

提前谢谢! :)

1 个答案:

答案 0 :(得分:2)

首先,您应将awaitasyncio.sleep()一起使用。

您可以使用以下功能-向this gist的作者致谢:

async def gather_dict(tasks: dict):
    async def mark(key, coro):
        return key, await coro

    return {
        key: result
        for key, result in await gather(
            *(mark(key, coro) for key, coro in tasks.items())
        )
    }

async def main():
    result = await gather_dict({'html': get_html(), 'data': get_data()})
    print(result)

这将并行执行两个协程并打印:{'html': 'html codes...', 'data': [{'id': 1, 'name': 'Jay'}, {'id': 2, 'name': 'Jonh'}]}