#!/usr/bin/env python2.3

from time import time, sleep
import thread

class Scheduler:
    def __init__(self):
        self.tasks = []

    def add_task(self, func, delay):
        task = type('Task', (), {'func': func, 'delay':delay, 'last': time()})
        self.tasks.append(task)

    def start(self):
        while True:
            for task in self.tasks:
                if time() > task.last:
                    task.func.call()
                    task.last = time() + task.delay
            sleep(0.1)

class FuncCounter:
    def __init__(self, func):
        self.count = 1
        self.func = func

    def call(self):
        self.func( self.count )
        self.count += 1


if __name__ == '__main__':

    def foo_func(num):
        print "foo(%d)" % num

    def bar_func(num):
        print "bar(%d)" % num

    scheduler = Scheduler()
    scheduler.add_task(FuncCounter(foo_func), 1.0)
    scheduler.add_task(FuncCounter(bar_func), 5.0)
    scheduler.start()




syntax highlighted by Code2HTML, v. 0.9.1