【发布时间】:2020-05-11 00:10:15
【问题描述】:
我以前从未使用过协程,所以这个问题对你来说可能是微不足道的。我有几个yield一些值的生成器,如下:
@asyncio.coroutine
def generator_1():
while True:
# do something
yield value_1
@asyncio.coroutine
def generator_2():
while True:
# do something
yield value_2
我想等到其中至少有一个产生了一些东西,即我不需要所有的屈服值,只需要其中一个。目前,我已经按照我在网上找到的示例进行了以下操作:
async def get_at_least_one():
await asyncio.wait(generator_1(), generator_2(), return_when=asyncio.FIRST_COMPLETED)
这给了我一个错误:
TypeError: 需要一个期货列表,而不是生成器
我了解此错误的来源,但不知道如何正确执行此操作。我怎样才能实现我上面描述的,即等到至少一个产生?
【问题讨论】:
标签: python multithreading python-asyncio coroutine