Python scheduler

Terry Reedy tjreedy at udel.edu
Thu Feb 21 00:07:51 EST 2013


On 2/20/2013 11:04 PM, Rita wrote:

> Here is what I am trying to do. (Currently, I am doing this in cron but
> i need much more granularity). I am trying to run program every 20 secs
> and loop forever. I have several of these types of processes, some
> should run every 5 mins, 10 secs, 20 secs, 1 min and so forth. I was
> wondering what is the best way to do this?

One way is to use a heap as a priority queue (see heapq module).
Make a table of (delay, process) pairs.
Load time-to-execute, process pairs in the queue.
Run the main loop:
while True:
   get top of queue
   sleep time-to-execute - now() seconds
   start subprocess
   put new time-to-execute, process pair in the queue

This simple version assumes that processes are self-contained and do not 
need to communicate with driver process and its loop.

> Also, would Greenlet do something I am asking for?

Don't know.

-- 
Terry Jan Reedy




More information about the Python-list mailing list