何时在Python中使用等待键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了何时在Python中使用等待键?相关的知识,希望对你有一定的参考价值。

我目前正在尝试使用Python学习异步。我知道await关键字告诉循环它可以切换协程。但是,我什么时候应该实际使用它?为什么不把它放在一切前面呢?

另外,为什么等待在'response.text()'之前,为什么不在session.get(url)之前?

async def print_preview(url):
    # connect to the server
    async with aiohttp.ClientSession() as session:
        # create get request
        async with session.get(url) as response:
            # wait for response
            response = await response.text()

            # print first 3 not empty lines
            count = 0
            lines = list(filter(lambda x: len(x) > 0, response.split('\n')))
            print('-'*80)
            for line in lines[:3]:
                print(line)
            print()
答案

您在文档中标记为协程的功能之前使用await。例如,ClientResponse.text标记为协程,而ClientResponse.text则未标记,这意味着您等待前者而不必等待后者。如果您忘记等待协程,它将根本不会执行。

[ClientResponse.close被隐式等待,因为它与ClientResponse.close一起使用,它接受异步上下文管理器并自动等待其入口点返回的对象。

还要注意,等待并不是协程唯一可以做的事情,另一种是将协程转换成任务,从而使它们可以并行运行(在操作系统级别上没有额外的成本)。有关更多信息,请参阅asyncio上的session.get()

以上是关于何时在Python中使用等待键?的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用片段,以及何时使用片段而不是活动?

如何知道片段何时在 viewpager 中实际可见

何时使用活动转换与动态片段的模式

如何判断片段在 N​​avigationDrawer 中何时不可见

如何知道何时调用了`navController.popBackStack()`?

Python snippet(代码片段)