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