qvx wrote:
I need a scheduler which can delay execution of a
function for certain period of time.
My attempt was something like this: ... <<<code>>>
Is there a better way or some library that does that?
The trick is to use Queue's timeout argument to interrupt your sleep
when new requests come in.
def time_server(commands):
'''Process all scheduled operations that arrive on queue commands'''
pending = []
while True:
now = time.time()
while pending and pending[0][0] <= now:
when, function, args, kwargs = heapq.heappop(pending)
function(*args, **kwargs)
try:
command = commands.get(timeout=pending[0][0] - now
if pending else None)
except Queue.Empty:
pass
else:
if command is None:
break
heapq.heappush(pending, command)
queue = Queue.Queue()
thread.thread.start_new_thread(queue)
queue.put((time.time() + dt, callable, args, {}))
...
--Scott David Daniels
[EMAIL PROTECTED]
--
http://mail.python.org/mailman/listinfo/python-list