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
-
PythonFunctionWorker
class (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
parallel_manager-0.1.0.tar.gz
(10.0 kB
view details)
Built Distribution
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 |