Skip to main content

A simple shell command manager. Used for running parallel simulations.

Project description

parallel_manager

Python test PyPI version

A simple shell command manager. Used for running parallel simulations.

How-to

First install the package with pip:

pip install parallel_manager

To run the manager, we will need to wrap the manager initialization and request creations all in a async function like this:

from parallel_manager.manager import BaseShellManager
from parallel_manager.workerGroup import ShellWorkerGroup
import logging
import asyncio

async def Main():
    # Init the manager
    simpleShellWorkergroup = ShellWorkerGroup("simpleShellWorkergroup",
                                        logging.getLogger(),
                                        "./log",
                                        10)
    simpleShellManager = BaseShellManager("simpleShellManager")
    simpleShellManager.add_workergroup("shell", simpleShellWorkergroup)
    await simpleShellManager.init()

    # Adding tasks
    # Here we just run 100 echo
    for i in range(100):
        simpleShellManager.add_shell_request(f"echoing loop-{i}", f"echo {i}")

   # Wait for the manager to finish
   await simpleShellManager.done()

Then we simply use asyncio.run() to run the above function:

asyncio.run(Main())

The manager will run at most 10 processes at a given time and will terminate when all 100 requests are done.

Full example is at here

Structure

  1. Worker
    1. Receive request from queue and process it
  2. WorkerGroup
    1. Manage workers of same class
    2. Collect basic stats from workers
  3. Manager
    1. Might host various workergroups with different worker type
    2. Support various ways to add tasks
    3. Control workergroups/workers
    4. Various middleware/plugin to the BaseManager to implement other features like http web monitoring and task submission

TODOs

Short-term todos

  1. Manager statistics plugin
  2. Manager summary when all tasks are done
  3. Timeout support
  4. Status monitor, progress monitor
  5. Dump failed task/able to rerun
  6. Dump unfinished tasks when script terminates

Long-term todos

  1. Thread-mode support (completely non-blocking)
    1. Use a separate thread to run the workers
    2. Allow to submit task at any time
  2. Http monitor
  3. Interactive control for status monitoring and changing configuration dynamically, treat worker as a server that can submit task to, like a local slurm control
  4. PythonFunctionWorker class (execute python function calls) and other worker class as well
  5. Standardize plugin format for each class
    1. For instance, http server monitor could be a plugin that can be added to any manager class.

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

parallel_manager-0.1.0.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

parallel_manager-0.1.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file parallel_manager-0.1.0.tar.gz.

File metadata

  • Download URL: parallel_manager-0.1.0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for parallel_manager-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d6948a963225dc5afa128a8dfe9691ce0d3fa13a72b961c5bd135925c7f15c7d
MD5 128125fc8720811fae3cacd0c77b8225
BLAKE2b-256 23539f89185faa7a8ceeb1a18705febfe64032cfe8724a7875688d1e99c53466

See more details on using hashes here.

File details

Details for the file parallel_manager-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for parallel_manager-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20597c56406c21e08b83aa6bdda077255a5a6acf89c2f530117c0565b705c3db
MD5 c5f1aa50f7582b1447937f36cc98698b
BLAKE2b-256 6433cf3cf43c5f89943b5a6d4495ac42405b613ccafa3d0875a8f92d6ba8c100

See more details on using hashes here.

Supported by

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