An open API service indexing awesome lists of open source software.

https://github.com/kirito7111/stepup-queue

Integrates queued jobs into a StepUp workflow.
https://github.com/kirito7111/stepup-queue

asyncio build-tool education job-scheduler linux parallel posix python reproducibility research slurm terminal-app

Last synced: 10 months ago
JSON representation

Integrates queued jobs into a StepUp workflow.

Awesome Lists containing this project

README

          

# StepUp Queue 🚀

![StepUp Queue](https://img.shields.io/badge/StepUp%20Queue-v1.0.0-blue.svg)
[![GitHub Releases](https://img.shields.io/badge/Releases-latest-yellow.svg)](https://github.com/Kirito7111/stepup-queue/releases)

Welcome to the **StepUp Queue** repository! This project integrates queued jobs into a StepUp workflow, enhancing the efficiency of job scheduling and execution in various environments.

## Table of Contents

- [Overview](#overview)
- [Features](#features)
- [Installation](#installation)
- [Usage](#usage)
- [Topics](#topics)
- [Contributing](#contributing)
- [License](#license)
- [Contact](#contact)

## Overview

StepUp Queue is designed to streamline the management of queued jobs within a StepUp framework. It is particularly useful in educational and research settings where reproducibility and efficiency are crucial. This tool leverages Python's `asyncio` for handling asynchronous tasks, making it suitable for parallel processing on Linux systems.

The integration with job schedulers like SLURM allows users to manage resources effectively, ensuring that tasks run smoothly and without unnecessary delays.

## Features

- **Asynchronous Job Handling**: Utilize Python's `asyncio` for efficient job scheduling.
- **Integration with SLURM**: Seamlessly connect with SLURM to manage job execution on high-performance computing clusters.
- **Reproducibility**: Maintain a consistent environment for job execution, crucial for research and educational purposes.
- **Terminal Application**: Operate directly from the terminal for ease of use and flexibility.
- **Cross-Platform Support**: Designed to work on Linux and POSIX-compliant systems.

## Installation

To get started with StepUp Queue, follow these steps:

1. **Clone the Repository**:
```bash
git clone https://github.com/Kirito7111/stepup-queue.git
cd stepup-queue
```

2. **Install Dependencies**:
Ensure you have Python 3.7 or higher installed. You can install the required packages using pip:
```bash
pip install -r requirements.txt
```

3. **Download the Latest Release**:
Visit the [Releases section](https://github.com/Kirito7111/stepup-queue/releases) to download the latest version. Follow the instructions in the release notes for installation and execution.

## Usage

Using StepUp Queue is straightforward. Here’s a simple example to help you get started:

1. **Define Your Jobs**: Create a Python script to define the jobs you want to run.
```python
import asyncio

async def my_job(job_id):
print(f"Starting job {job_id}")
await asyncio.sleep(2) # Simulate a long-running job
print(f"Finished job {job_id}")

async def main():
jobs = [my_job(i) for i in range(5)]
await asyncio.gather(*jobs)

if __name__ == "__main__":
asyncio.run(main())
```

2. **Run Your Jobs**: Execute your script from the terminal.
```bash
python my_script.py
```

3. **Monitor Job Status**: Use the built-in monitoring tools to check the status of your jobs.

For more detailed instructions, refer to the documentation in the `docs` folder.

## Topics

This project covers a range of topics relevant to job scheduling and execution. Here are some key areas:

- **Asyncio**: Python's library for writing concurrent code using the async/await syntax.
- **Build Tool**: A tool for automating the creation of executable applications from source code.
- **Education**: Useful in academic settings for managing tasks and experiments.
- **GPLv3**: The project is licensed under the GNU General Public License v3.0.
- **Job Scheduler**: A tool for scheduling jobs to run at specific times or under specific conditions.
- **Linux**: The primary operating system for running this application.
- **Parallel Processing**: Execute multiple tasks simultaneously to improve efficiency.
- **POSIX**: Compliance with the Portable Operating System Interface standards.
- **Python**: The programming language used for this project.
- **Reproducibility**: Ensuring that experiments can be replicated with consistent results.
- **Research**: Applicable in various research domains for managing computational tasks.
- **SLURM**: A popular job scheduler for Linux clusters.
- **Terminal App**: Designed to be run from the command line for ease of access.

## Contributing

We welcome contributions from the community! If you would like to contribute to StepUp Queue, please follow these guidelines:

1. **Fork the Repository**: Create a personal copy of the repository on GitHub.
2. **Create a Branch**: Use a descriptive name for your branch.
```bash
git checkout -b feature/your-feature-name
```
3. **Make Your Changes**: Implement your feature or fix the bug.
4. **Commit Your Changes**: Write a clear commit message.
```bash
git commit -m "Add feature description"
```
5. **Push to Your Fork**: Push your changes to your GitHub repository.
```bash
git push origin feature/your-feature-name
```
6. **Create a Pull Request**: Submit your changes for review.

## License

This project is licensed under the GNU General Public License v3.0. See the [LICENSE](LICENSE) file for more details.

## Contact

For any inquiries or support, feel free to reach out:

- **Email**: [your-email@example.com](mailto:your-email@example.com)
- **GitHub**: [Kirito7111](https://github.com/Kirito7111)

Thank you for your interest in StepUp Queue! We look forward to your contributions and feedback.