This project was inspired by running long term workflows such as dataset generation, dense image processing tasks, network training and statistical testing for research. It works by letting you push tasks to a task FIFO that executes tasks sequentially from the cli, without having to use a task scheduler. It uses a singly linked list to implement this queue allowing post requests to its port for pushing tasks to the queue.
Training neural networks with and without accelerated hardware can be hard to manage when the training process takes more than just a few hours. You dont want to have to be waking up in the middle of the night to run the next step in your development pipeline either. Creating a simple task queue server can make running tasks sequentially much easier.
Parallelizing processes can speed up smaller independent or repetitive tasks. Having access to multiple cpu cores allows for multiple python runtimes at once even. But often if your programs require GPU resources, it gets harder to run multiple scripts to run simultaneously due to GPU memory locks and exhausting VRAM.
In these cases, without multiple machines, or multiple GPUs, executing scripts with no downtime in between is another work around, thats less likely to crash due to memory safety and resource management, at the expense of time.
The runtime creates a queue object, that upon receiving requests, pushes a task onto the queue, executes it is next, pops after finishing and executes the remaining tasks in the queue. This also manages the head and tail pointers, and handles requests while the execution worker is busy in order to properly queue tasks.
