为什么我们在 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())
在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())