2024-09-30 01:37:36 发布
网友
我有一个假设的asyncio.gather场景:
asyncio.gather
await asyncio.gather( cor1, [cor2, cor3], cor4, )
我想在这里按顺序执行cor2和cor3。除了像这样定义外部协同程序外,还有其他快捷方式吗
cor2
cor3
async def cor2_cor3(): await cor2 await cor3 await asyncio.gather( cor1, cor2_cor3, cor4, )
有没有更干净的捷径
Is there a cleaner shortcut for this?
asyncio不提供现成的解决方案。如果asyncio任务有一个与JavaScript的^{}等效的方法,那么就可以使用asyncio.create_task(cor2()).then(cor3())。但是asyncio等价物^{}是一个更低级的构造,它只设置回调而不创建新的未来,这使得链接不方便
asyncio.create_task(cor2()).then(cor3())
要按顺序执行协同路由,您需要编写一个简单的实用程序函数,例如(未测试):
async def chain(*aws): ret = None for aw in aws: ret = await aw return ret
然后您可以调用gather作为:
gather
await asyncio.gather(cor1(), chain(cor2(), cor3()), cor4())
asyncio不提供现成的解决方案。如果asyncio任务有一个与JavaScript的^{} 等效的方法,那么就可以使用} 是一个更低级的构造,它只设置回调而不创建新的未来,这使得链接不方便
asyncio.create_task(cor2()).then(cor3())
。但是asyncio等价物^{要按顺序执行协同路由,您需要编写一个简单的实用程序函数,例如(未测试):
然后您可以调用
gather
作为:相关问题 更多 >
编程相关推荐