gpt4 book ai didi

python - 使用loop.create_task创建的asyncio事件循环任务是否为FIFO

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:17 25 4
gpt4 key购买 nike

我找不到任何相关文档,但从经验来看,似乎确实如此。

在以下三个示例中,协程 1 和 2 将以什么顺序运行?顺序是否始终得到保证?

A

loop.run_until_complete(coro1)
loop.run_until_complete(coro2)
loop.run_forever()

B

loop.create_task(coro1)
loop.create_task(coro2)
loop.run_forever()

C

loop.create_task(coro1)
loop.run_until_complete(coro2)
loop.run_forever()

等等

最佳答案

在第一个示例中,coro1 将运行直到完成。然后 coro2 将运行。这本质上与它们都是同步函数相同。

在第二个示例中,coro1 将一直运行,直到被告知等待。此时控制权将交给coro2coro2 将一直运行,直到被告知等待。此时循环将检查coro1是否已准备好恢复。这将重复,直到两者都完成,然后循环将等待。

在最后一个示例中,coro2 首先启动,遵循与前一个示例相同的来回操作,然后一旦 coro2 完成,该过程就会停止。然后 coro1 将恢复直到完成,然后循环将等待。

第四个例子是

loop.run_until_complete(
asyncio.gather(
asyncio.ensure_future(coro1),
asyncio.ensure_future(coro2),
)
)

它的行为与第二个示例类似,只是在两个示例完成后它将停止。

关于python - 使用loop.create_task创建的asyncio事件循环任务是否为FIFO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40099885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com