Python aiter() ビルトイン関数
非同期イテラブルの非同期イテレータを返します。x.__aiter__() を呼び出すことと同等です。aiter() は iter() の async 版です。
導入
aiter() 関数は、非同期イテラブルオブジェクトから非同期イテレータを返します。これは iter() 関数の非同期版です。
通常、async for ループを使用する際に aiter() は暗黙的に呼び出されますが、イテレータを手動で操作する場合(多くの場合 anext() と組み合わせて)は直接呼び出すことができます。
例
非同期イテラブルの例を以下に示します。async for ループは、イテレータを取得するために AsyncCounter オブジェクトに対して自動的に aiter() を呼び出します。
import asyncio
class AsyncCounter:
def __init__(self, stop):
self.stop = stop
self.current = 0
def __aiter__(self):
return self
async def __anext__(self):
if self.current < self.stop:
await asyncio.sleep(0.1)
value = self.current
self.current += 1
return value
else:
raise StopAsyncIteration
async def main():
async for number in AsyncCounter(3):
print(number)
# 実際の環境で実行するには:
# asyncio.run(main())
0
1
2