Skip to content

async-iterator

Easy way to use async iterator without take care about asyncio’s TaskGroup.

Test Publish Coverage Package version Downloads

PyPI - Python Version


Documentation: https://async-iterator.lpthong90.dev

Source Code: https://github.com/lpthong90/async-iterator


The package helps to use async iterator without take care about asyncio's taskgroup.

Installation

$ pip install async-iterator
---> 100%
Successfully installed async-iterator

Basic Usage

import asyncio
import time

from async_iterator import aiter, siter

inputs = [1, 2, 3]


async def afunc(it: int) -> int:
    await asyncio.sleep(2)
    return it + 1


def sfunc(it: int) -> int:
    time.sleep(2)
    return it + 1


async def amain():
    return await aiter(afunc)(inputs)


def smain():
    return siter(sfunc)(inputs)


if __name__ == "__main__":
    format = "%Y-%m-%d %H:%M:%S"

    print(time.strftime(format))
    print("async", asyncio.run(amain()))  # it takes ~2 seconds
    print(time.strftime(format))
    print("sync", smain())  # it takes ~6 seconds
    print(time.strftime(format))

Output

2024-01-06 00:58:54
async [2, 3, 4]
2024-01-06 00:58:56
sync [2, 3, 4]
2024-01-06 00:59:02

License

This project is licensed under the terms of the MIT license.