似乎有出現兩種的發電的協程:這兩種基於生成器的協同程序是相同的概念嗎?
從a reply 由吉姆Fasarakis希利亞德:
的發電的協程:一個發電機(
def
+yield
),該被types.coroutine
包裹。如果需要將它視爲協程對象,則需要將其包裝在types.coroutine
中。通過Python果殼中,不顯式調用 「基於生成器的協同程序」:
當你寫一個基於
asyncio
(理想情況下還使用 Python代碼插件來自asyncio.org的模塊),你通常會編寫協同函數 。包括Python 3.4在內,這些函數 是使用第95頁上的「產量 (僅限v3-only)」中所述的yield from
語句生成的生成器,使用第518頁上的「asyncio協同程序」中涵蓋的@asyncio.coroutine
, 修飾;從 https://www.python.org/dev/peps/pep-0492/#differences-from-generators
發電的協同程序(用於ASYNCIO代碼必須與@ asyncio.coroutine裝飾)
http://masnun.com/2015/11/13/python-generators-coroutines-native-coroutines-and-async-await.html 也將其稱爲 「基於生成器的協同程序」。
這兩種基於生成器的協程是相同的概念嗎?
如果不是,他們在目的和用途上有何分別?
謝謝。