A package to schedule different tasks in parallel with cluster support.
Project description
Slurmer
This package is designed to run heavy loads in a computer cluster. Supported task schedulers are: - Running on a single node - SLURM
PRs to add more schedulers are welcome.
Features
- Run multiple tasks in parallel.
- Run tasks in randomised order but consistently in multiple computing nodes.
- Consistent pipeline to work with heavy tasks (directory creation, handling errors, postprocessing...)
Example
You can find the documentation here.
The package can be used as follows:
from dataclasses import dataclass
from pathlib import Path
from typing import Iterator
import slurmer
@dataclass
class MyTaskParameters(slurmer.TaskParameters):
processing_id: int
@dataclass
class MyTaskResult(slurmer.TaskResult):
good_result: bool
class MyTask(slurmer.Task):
def __init__(self, min_job: int, max_job: int):
super().__init__()
self.min_job = min_job
self.max_job = max_job
def generate_parameters(self) -> Iterator[MyTaskParameters]:
for i in range(self.min_job, self.max_job):
yield MyTaskParameters(processing_id=i)
def make_dirs(self):
# Dirs are created before the task is run
for i in range(self.min_job, self.max_job):
Path(f"out/result_{i}").mkdir(parents=True, exist_ok=True)
def process_function(self, parameters: MyTaskParameters) -> MyTaskResult:
# Run your heavy code here
for i in range(parameters.processing_id, parameters.processing_id + 10):
print(f"Processing {i}")
return MyTaskResult(good_result=True)
def process_output(self, result: MyTaskResult) -> bool:
# Postprocess output, this is NOT run in parallel and only handles the tasks run
# in the current node. If you want to postprocess everything wait for all the nodes
# to finsish computing.
#
# This function should check whether the output is the "expected" one and return True
# if something went wrong.
return not result.good_result
Then in your main script:
>>> task = MyTask(min_job=1, max_job=10)
>>> task.execute_tasks()
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
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 slurmer-1.0.2.tar.gz.
File metadata
- Download URL: slurmer-1.0.2.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.7.12 Linux/5.11.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2621d0b820b606a4aa2fdfc28e77e7f091e1cd60edbfeff74df42bd0612c67fb
|
|
| MD5 |
b6caa39d83f98e3aca143d4ddf2efd5a
|
|
| BLAKE2b-256 |
ff2eeeb97bd261f194cb049c8cc60dce32be0411564a14ba364a43bf4d030703
|
File details
Details for the file slurmer-1.0.2-py3-none-any.whl.
File metadata
- Download URL: slurmer-1.0.2-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.7.12 Linux/5.11.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9fdf176a1bb6be09fa17c78578479ff8c087f34a84f0212d869c39fdb7e2b83
|
|
| MD5 |
b09856a749dc785388e768057f2f1e99
|
|
| BLAKE2b-256 |
9887b537177b9c5bbf8d00c370dd3a0084fab4caafb3da11c490117ae78575a5
|