似乎有两种基于发电机的协同线:
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
复制相似问题