【发布时间】:2014-05-04 04:20:51
【问题描述】:
我一直在使用 Python 协程而不是线程,并取得了一些成功。我突然想到我可能需要一个知道自己的协程,所以它可以给自己发送一些东西。我发现这是不可能的(无论如何在 Python 3.3.3 中)。为了测试,我写了以下代码:
def recursive_coroutine():
rc = (yield)
rc.send(rc)
reco = recursive_coroutine()
next(reco)
reco.send(reco)
这引发了一个异常:
Traceback (most recent call last):
File "rc.py", line 7, in <module>
reco.send(reco)
File "rc.py", line 3, in recursive_coroutine
rc.send(rc)
ValueError: generator already executing
虽然错误很明显,但感觉这应该是可能的。我从来没有想出一个有用的、现实的递归协程应用程序,所以我不是在寻找特定问题的答案。除了实施困难之外,还有其他原因是不可能的吗?
【问题讨论】:
标签: python recursion generator coroutine