从写过异步代码但希望更好地了解内部工作原理的人的角度来看,这是什么yield from
,await
以及这些对于允许异步代码有用吗?
有一个非常受质疑的问题,询问yield from
语法的用法,一个问题解释了async和await,但是两者都深入探讨了不同的主题,并且并不是对基础代码及其与asyncio的配合的简要说明。
简短答案:
yield from
是等待asyncio协程的一种旧方法。
await
是等待asyncio协程的一种现代方式。
详细答案:
Python具有生成器-特殊类型的函数,它们生成结果序列而不是单个值。从Python 3.3yield from
表达式开始添加了。它允许一个生成器将其部分操作委托给另一生成器。
从Python
3.4开始,asyncio
模块已添加到标准库中。它使我们能够编写清晰易懂的异步代码。尽管从技术上讲asyncio的协程可以用不同的方式实现,asyncio
但它们是使用生成器实现的(您可以观看出色的视频,其中显示了如何使用生成器实现协程)。@asyncio.coroutine
是从生成器制作协程的yield from
一种方法,也是一种等待协程的方法-只是实现的细节。
这就是yield from
开始被用于两个“不同事物”的过程。
从Python 3.5开始(请参阅PEP
492
),协程得到了新的语法。现在,您可以使用定义协程asyncdef
并使用await
表达式等待它。它不仅编写时间短,而且更清楚地了解我们使用了asyncio的协程。
如果您使用的是Python 3.5+,则可能会忘记将其yield from
用于asyncio的协程await
。
我得到以下警告... 警告1此异步方法缺少await运算符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)'在后台线程上执行CPU绑定的工作。
没有await并且在非异步方法中调用异步方法的行为是什么?我这样问是因为我看到Visual Studio在调用异步方法时没有显示任何警告,好像这是一件非常正常的事情。在这种情况下,异步方法的行为是否像是同步的?
这两种方法的主要区别是什么? 第一个使用
问题内容: 对于pythonselenium,我不太了解VS 的确切区别。。两者似乎可以互换使用,以设置超时时间以通过加载URL ,但有时也可以一起使用。 场景1 : 方案2 : 两种情况有何不同? 哪些情况在一种情况下触发了超时,但另一种情况却未触发? 问题答案: 根据 Selenium-Python API Docs 和两者都是 超时 方法,用于将 webdriver 实例配置为在程序执行期间
本文向大家介绍JavaScript与java语言有什么不同,包括了JavaScript与java语言有什么不同的使用技巧和注意事项,需要的朋友参考一下 讲个故事:话说很久很久以前,有一个叫网景(Netscape)的,十月怀胎,他生了个儿子,很开兴,给儿子取名livescript。Livescript很勤奋,帮大叔大婶干了好多活,也给他爸赚了很多钱。突然一天sun生了个儿子:java,java很厉害