A simple shell command manager. Used for running parallel simulations.
Project description
parallel_manager
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
- Worker
- Receive request from queue and process it
- WorkerGroup
- Manage workers of same class
- Collect basic stats from workers
- Manager
- Might host various workergroups with different worker type
- Support various ways to add tasks
- Control workergroups/workers
- Various middleware/plugin to the BaseManager to implement other features like http web monitoring and task submission
TODOs
Short-term todos
- Manager statistics plugin
- Manager summary when all tasks are done
- Timeout support
- Status monitor, progress monitor
- Dump failed task/able to rerun
- Dump unfinished tasks when script terminates
Long-term todos
- Thread-mode support (completely non-blocking)
- Use a separate thread to run the workers
- Allow to submit task at any time
- Http monitor
- Interactive control for status monitoring and changing configuration dynamically, treat worker as a server that can submit task to, like a local slurm control
-
PythonFunctionWorkerclass (execute python function calls) and other worker class as well - Standardize plugin format for each class
- For instance, http server monitor could be a plugin that can be added to any manager class.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6948a963225dc5afa128a8dfe9691ce0d3fa13a72b961c5bd135925c7f15c7d
|
|
| MD5 |
128125fc8720811fae3cacd0c77b8225
|
|
| BLAKE2b-256 |
23539f89185faa7a8ceeb1a18705febfe64032cfe8724a7875688d1e99c53466
|
File details
Details for the file parallel_manager-0.1.0-py3-none-any.whl.
File metadata
- Download URL: parallel_manager-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20597c56406c21e08b83aa6bdda077255a5a6acf89c2f530117c0565b705c3db
|
|
| MD5 |
c5f1aa50f7582b1447937f36cc98698b
|
|
| BLAKE2b-256 |
6433cf3cf43c5f89943b5a6d4495ac42405b613ccafa3d0875a8f92d6ba8c100
|