首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中“等待”代码流?

如何在Python中“等待”代码流?
EN

Stack Overflow用户
提问于 2020-03-19 00:10:36
回答 1查看 50关注 0票数 0

如何在Python中“等待”代码流?这是清除我问题的密码。

代码语言:javascript
复制
import asyncio

async def io_related(name):
    print(f'{name} started')
    await asyncio.sleep(0.1)
    print(f'{name} finished')


async def main():
    await asyncio.gather(
        io_related('1'),
        io_related('2'),
        io_related('3'),
        io_related('4'),
    )

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

我得到了这个输出:

"1开始

2开始

3开始

4开始

1完成

3完成

2完成

4完成“

为什么"3“在"2”之前完成?。代码是如何运行的?我试着把"1“、"2”、"3“放在”等待asyncio.gather“中。它的工作,如我所预期的,但在项目"4“之后,事情的顺序”完成“是混乱的可怕。

EN

回答 1

Stack Overflow用户

发布于 2020-03-19 00:35:09

这是一个关于线程/异步编程如何工作的问题。异步方法都将在同一时间启动,但只要数据返回就会结束。

这里的等待只是一个关键词,“嘿,等这些都回来再继续”。

所以,把它想象成加载网页更好。如果您同时调用google.com、microsoft.com、netflix.com和stackoverflow.com,则可以合理地预期它们可能不会按照调用它们的顺序返回页面。这将取决于这个问题范围之外的几件事。

这里的关键点是,当您开始使用异步方法时,您不能期望结果按照您所调用的顺序返回。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60749187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档