似乎有两种基于发电机的协同线:
types.coroutine
包装的生成器(def
+ yield
)。如果需要将其视为协同对象,则需要将其包装在types.coroutine
中。asyncio
的Python代码(理想情况下也使用来自asyncio.org的外接程序模块)时,您通常会编写协同函数。包括Python3.4,这类函数是使用第95页“产自(v3-只)”中包含的yield from
语句生成的,用@asyncio.coroutine
修饰,在第518页中包含“异步协同”;来自https://www.python.org/dev/peps/pep-0492/#differences-from-generators
基于生成器的协同(异步代码必须用@asyncio.coroutine修饰)
http://masnun.com/2015/11/13/python-generators-coroutines-native-coroutines-and-async-await.html还称其为“基于生成器的协同线”。
这两种基于生成器的协同线是相同的概念吗?
如果没有,它们在用途和用途上有什么不同?
谢谢。
发布于 2017-10-20 00:11:38
它们是同类型的协同素。types.coroutine
和asyncio.coroutine
只是创建它们的两种不同的方法。
asyncio.coroutine
更老了,早于async
协同系统的引入,而且它的功能已经从原来的行为有所改变,因为async
协同机制已经存在了。
asyncio.coroutine
和types.coroutine
有着微妙的不同行为,特别是如果应用于生成器函数以外的任何东西,或者异步应用在调试模式中。
发布于 2017-10-19 23:59:10
https://stackoverflow.com/questions/46830144
复制相似问题