【发布时间】:2011-07-04 15:01:17
【问题描述】:
我正在阅读PEP-3153,但我不明白它想要解决的问题是什么。 你能解释一下吗?
【问题讨论】:
-
你并不孤单。我也不明白。
标签: python language-design language-features
我正在阅读PEP-3153,但我不明白它想要解决的问题是什么。 你能解释一下吗?
【问题讨论】:
标签: python language-design language-features
你可以谷歌“Python coroutines”并获得很多好的信息。 Here is a presentation (PDF) 我前段时间遇到过,关于如何和为什么,我觉得这很不错。 source code is also available(这包括 PDF,所以如果你想要两者,只需下载这个)。此演示文稿的 home page 包含指向各个源文件的链接。
【讨论】:
你知道发电机是什么吗?一个可以停止其处理的函数,以便它可以在恢复生成下一个值之前返回(“yield”)一个值。
好吧,协程(尽管 PEP 使用术语“协函数”)就像这样,只是它不需要产生任何东西,而是可以转移到另一个协程(在语言中的“cocall”人民党)。这种能力有各种各样的用途,例如能够在此基础上构建本质上是您自己的轻量级协作线程实用程序(我也看到了一些非常简洁的模板库以这种方式完成)尽管当您可以时这特别有用在协程调用的函数之间也可以传递。
请注意,没有什么需要协程。您总是可以以不同的方式编写代码,而无需它们。有时这样做会复杂得多(由于需要更明确的状态管理)。
【讨论】:
cofunctions 提案只是对 python 现有协程设施的清理,据了解,这些设施是基于生成器的(链接到 canonical presentation)。 PEP 确实解释了motivations:使错误消息更加明确,避免了通过 yield 关键字来确定函数是否是生成器的麻烦,并且更容易在协程之间进行委托。
【讨论】: