"async_generator"对象不可迭代。

10

我需要在异步函数中返回一个值。我尝试使用同步的return形式:

import asyncio

async def main():
    for i in range(10):
        return i
        await asyncio.sleep(1)

print(asyncio.run(main()))

输出:

0 [用了204毫秒]

但它只返回第一个循环的值,这不是我们期望的结果。因此将代码更改如下:

import asyncio

async def main():
    for i in range(10):
        yield i
        await asyncio.sleep(1)

for _ in main():
    print(_)

输出:

TypeError: 'async_generator' 对象不可迭代

使用异步生成器时,我遇到了这个错误。如何在异步函数的每次循环中返回一个值?

谢谢

1个回答

17

你需要使用 async for,而它本身需要在 async 函数内部:

async def get_result():
    async for i in main():
        print(i)

asyncio.run(get_result())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接