job_queue.py |
|
---|---|
This module provides a Job_queue class, and an example of use. One may drop in either multiprocessing Prcoesses or threading Threads, as I have show in the test suite. |
|
The goal of this class is to make a queue of processes to run, and go through them running X number at any given time. So if the bubble is 5 start with 5 running and move the bubble of running procs along the queue looking something like this: Start ........................... [~~~~~].................... ___[~~~~~]................. _________[~~~~~]........... __________________[~~~~~].. ____________________[~~~~~] ___________________________ End |
|
|
|
Setup the class to resonable defaults. |
|
|
|
Simply states if all procs are alive or not. Needed to determine when to stop looping, and pop dead procs off and add live ones. |
|
|
|
Just going to use number of jobs as the Job_Queue length. |
|
|
|
A sanity check, so that the need to care about new jobs being added in the last throws of the job_queue's run are negated. |
|
|
|
Add the Process() to the queue, so that later it can be checked up on. That is if the Job_Queue is still open. |
|
|
|
This is the workhorse. It will take the intial jobs from the _queue, start them, add them to _running, and then go into the main running loop. This loop will check for done procs, if found, move them out of _running into _completed. It also checks for a _running queue with open spots, which it will then fill as discovered. To end the loop, there have to be no running procs, and no more procs to be run in the queue. When all if finished, it will exit the loop, and disconnect_all() |
|
|
|
Helper function to do the job of poping a new proc off the queue start it, then add it to the running queue. This will eventually depleate the _queue, which is a condition of stopping the running while loop. |
|
|
|
Sample |
|
This will run the queue through it's paces, and show a simple way of using the job queue. |
|
|
|
Simple function to give a simple task to execute. |
|
|
|
Make a job_queue with a bubble of len 5, and have it print verbosely |
|
Add 20 procs onto the stack |
|
Close up the queue and then start it's execution |
|