为什么我们在 Python 中使用 aiter() 内置函数?

Why we use aiter() Built in Function in Python?

在python 3.10中我们看到了新的内置函数aiter(async_iterable)。在 python 文档中。定义是“Return 异步迭代器的异步迭代器。”但是我无法理解如何在 google/ youtube 中使用或不定义示例。有谁知道如何使用这个内置函数吗?

aiter()anext() 调用对象的 __aiter__()__anext__(),如果存在的话。它们本质上是 iter()next() 的异步等价物。在大多数情况下,您只想使用 async for。然而,为了理解 aiter()anext() 在做什么,下面示例中的协程 using_async_for()using_aiter_anext() 大致等效:

from asyncio import sleep, run

class Foo:
    def __aiter__(self):
        self.i = 0
        return self
    async def __anext__(self):
        await sleep(1)
        self.i += 1
        return self.i

async def using_async_for():
    async for bar in Foo():
        print(bar)
        if bar >= 10:
            break

async def using_aiter_anext():
    ai = aiter(Foo())
    try:
        while True:
            bar = await anext(ai)
            print(bar)
            if bar >= 10:
                break
    except StopAsyncIteration:
        return

async def main():
    print("Using async for:")
    await using_async_for()

    print("Using aiter/anext")
    await using_aiter_anext()

if __name__ == '__main__':
    run(main())