Skip to content

nvllsvm/async-executor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f995944 · Aug 4, 2024

History

11 Commits
Dec 9, 2022
Dec 9, 2022
Jun 14, 2023
Dec 9, 2022
Aug 4, 2024
Aug 4, 2024
Dec 9, 2022

Repository files navigation

async-executor

PyPI - Version

Async execution pool

Examples

Limit the number of concurrently running awaitables

import asyncio
import time

import async_executor


async def sleep_and_print(i):
    print(f'{i} {int(time.time())} - before sleep')
    await asyncio.sleep(1)
    print(f'{i} {int(time.time())} - after sleep')


async def main():
    # limit to a maximum of two concurrent executions
    executor = async_executor.AsyncExecutor(max_concurrent=2)

    # awaitables are only queued here - nothing is run
    for i in range(5):
        executor.submit(sleep_and_print, i)

    # awaitables begin executing
    async for task in executor:
        task.result()

asyncio.run(main())

This shows that only a maximum of two executions are allowed to run concurrently.

$ python examples/example_1.py
0 1670613515 - before sleep
1 1670613515 - before sleep
0 1670613516 - after sleep
1 1670613516 - after sleep
2 1670613516 - before sleep
3 1670613516 - before sleep
2 1670613517 - after sleep
3 1670613517 - after sleep
4 1670613517 - before sleep
4 1670613518 - after sleep

Installation

pip install async-executor

License

async-executor is distributed under the terms of the MIT license.

About

Async execution pool for Python

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages