Skip to content

lpthong90/async-iterator

Repository files navigation

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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published