Python 这两种基于生成器的协同程序是同一个概念吗?
似乎有两种基于生成器的协同程序:Python 这两种基于生成器的协同程序是同一个概念吗?,python,python-3.x,asynchronous,generator,coroutine,Python,Python 3.x,Asynchronous,Generator,Coroutine,似乎有两种基于生成器的协同程序: 从 作者Jim Fasarakis Hilliard: 基于生成器的协同程序:一个由。你需要把它包起来 types.coroutine如果需要将其视为一个coroutine对象 简而言之,它并不显式地调用Python “基于生成器的协同程序”: 当您基于asyncio编写Python代码时(理想情况下也使用 (来自asyncio.org的附加模块),您通常会编写 协程函数。直到包含Python3.4,这些函数 生成器是否使用“收益率”中包含的yield fro
types.coroutine
如果需要将其视为一个coroutine对象
asyncio
编写Python代码时(理想情况下也使用
(来自asyncio.org的附加模块),您通常会编写
协程函数。直到包含Python3.4,这些函数
生成器是否使用“收益率”中包含的yield from
语句
第95页上的from(仅v3)”用@asyncio.coroutine
修饰,
包含在第518页的“异步协同程序”中
从
基于生成器的协同程序(对于异步IO代码,必须用@asyncio.coroutine修饰)
也称之为“基于生成器的协同程序”谢谢。就我而言,
async def
是定义协同程序的合适方法<代码>收益和来自
的收益在生成器中有其用途,它们还用于实现“未来”,这是处理不同协同程序上下文之间切换的低级机制
几个月前,我总结了他们之间的关系。但坦率地说,你完全可以忽略整个事情。事件循环的任务是处理管理协同路由执行的所有低级细节,因此请使用其中的一个,如。对于其他事件循环,也有asyncio
兼容的包装器,比如我自己的GLib/GTK包装器
换句话说,坚持使用
asyncio
API,就可以编写“事件循环不可知”的协同路由了 就我而言,async def
是定义协同程序的合适方法<代码>收益和来自
的收益在生成器中有其用途,它们还用于实现“未来”,这是处理不同协同程序上下文之间切换的低级机制
几个月前,我总结了他们之间的关系。但坦率地说,你完全可以忽略整个事情。事件循环的任务是处理管理协同路由执行的所有低级细节,因此请使用其中的一个,如。对于其他事件循环,也有asyncio
兼容的包装器,比如我自己的GLib/GTK包装器
换句话说,坚持使用
asyncio
API,就可以编写“事件循环不可知”的协同路由了 他们是同一类型的合作伙伴<代码>类型.coroutine和异步.coroutine
只是创建它们的两种不同方法
asyncio.corroutine
比async
corroutine引入之前更为古老,并且它的功能已经从最初的行为发生了一些变化,现在async
corroutine已经存在
asyncio.corroutine
和类型。corroutine
具有微妙的不同行为,特别是当应用于除生成器函数以外的任何对象时,或者如果asyncio处于异步状态时。它们是同一种corroutine<代码>类型.coroutine和异步.coroutine
只是创建它们的两种不同方法
asyncio.corroutine
比async
corroutine引入之前更为古老,并且它的功能已经从最初的行为发生了一些变化,现在async
corroutine已经存在
asyncio.corroutine
和类型.corroutine
具有细微不同的行为,尤其是当应用于除生成器函数以外的任何对象时,或者如果asyncio处于