미지원 async 파이썬 함수 구현

async enumerate 함수

파이썬의 enumerate 함수는 비동기를 지원하지 않습니다. 아래와 같이 비동기 enumerate 함수를 구현할 수 있습니다.

from typing import AsyncIterator

async def aenumerate(
    iterable: AsyncIterator[str],
    start: int = 0,
) -> AsyncIterator[tuple[int, str]]:
    """Async version of enumerate function."""
    i = start
    async for x in iterable:
        yield i, x
        i += 1

사용 예시:

import asyncio
from typing import AsyncIterator

async def aenumerate(
    iterable: AsyncIterator[str],
    start: int = 0,
) -> AsyncIterator[tuple[int, str]]:
    """Async version of enumerate function."""
    i = start
    async for x in iterable:
        yield i, x
        i += 1

async def async_iterable() -> AsyncIterator[str]:
    for number in ["a", "b", "c", "d", "e"]:
        yield number

async def main():
    async for i, value in aenumerate(async_iterable()):
        print(f"{i}: {value}")

asyncio.run(main())

실행 결과:

0: a
1: b
2: c
3: d
4: e