Skip to main content

Library helps easy write concurrent executed code blocks

Project description

Concurrently

Library helps to easily write concurrent executed code blocks.

Quick example:

import asyncio
from concurrently import concurrently


async def amain(loop):
    """
    How to fetch some web pages with concurrently.
    """
    urls = [  # define pages urls
        'http://test/page_1',
        'http://test/page_2',
        'http://test/page_3',
        'http://test/page_4',
    ]
    results = {}

    # immediately run wrapped function concurrent
    # in 2 thread (asyncio coroutines)
    @concurrently(2)
    async def fetch_urls():
        for url in urls:
            # some function for download page
            page = await fetch_page(url)
            results[url] = page

    # wait until all concurrent threads finished
    await fetch_urls()
    print(results)


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(amain(loop))
Decorator @concurrently makes to main thinks:
  • starts concurrent execution specified count of decorated function

  • returns special waiter object to control the running functions

By default, the code runs as asyncio coroutines, but there are other supported ways to execute, by specifying the argument engine.

Documentation

See https://concurrently.readthedocs.io/

Requirements

Now support only Python 3.5 and above.

Install

From PyPi:

$ pip install concurrently

From local:

# update setuptools
$ pip install 'setuptools >= 30.4'
# do install
$ make install
# or
$ pip install .

Development

Prepare and activate virtual environment like:

$ python3 -m venv .env
# for bash
$ source .env/bin/activate
# for fish
$ . .env/bin/activate.fish

Update pre-install dependencies:

$ pip install 'setuptools >= 30.4'

Install:

$ make install_dev
# or
$ pip install --editable .[develop]

Run tests:

$ make test
# or
$ pytest tests/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

concurrently-2.1.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

concurrently-2.1-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file concurrently-2.1.tar.gz.

File metadata

  • Download URL: concurrently-2.1.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for concurrently-2.1.tar.gz
Algorithm Hash digest
SHA256 f477dbee46bf2deb2a88e5ed846f0306ddad34b9cf7c3d78e69be97b73904ff1
MD5 1ee6b003e70241c959ce5bc8a17182f6
BLAKE2b-256 d4cb528221dfd10c944ddc2531b6882ad13513a35670ed418a494fe328d1375b

See more details on using hashes here.

File details

Details for the file concurrently-2.1-py3-none-any.whl.

File metadata

  • Download URL: concurrently-2.1-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for concurrently-2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d80305f488cf400c76c575eae78c0f99c8c67d4510181f903d15d3b2722019ad
MD5 2657e1cde21dea5426f7cd9c6c5ea181
BLAKE2b-256 f02e366c547b67bb44603377bbaabe92aab4e0ee2483c84b4ea475b97e996fe6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page