【发布时间】:2018-04-23 21:00:02
【问题描述】:
在 python 3.3 中,我可以执行以下操作
def _gen():
for i in range(3):
yield i
def gen():
yield from _gen()
for i in gen():
print(i)
>>> 0
>>> 1
>>> 2
我可以在 python 3.6 asyncio 协程中做同样的事情吗? (警告,人为的例子)
async def _gen():
for i in range(3):
yield await get_num(i) # get_num is a coroutine
async def gen():
yield from _gen() # Syntax error!
for i in gen():
print(i)
我需要将gen 定义为
async def gen():
async for i in _gen():
yield i
但似乎应该有一种方法可以像 yield from 那样委托给另一个协程
【问题讨论】:
-
@Vincent 什么表明它将在某个时候实施?
-
因为这很有意义。这里的限制是,正如 PEP 525 指出的那样,它需要付出一些认真的努力,而且收益非常有限。
标签: python python-3.6 python-asyncio