Petr Jakes wrote:
I have infinitive loop running script and I would like to check
something periodically after 5 seconds (minutes, hours...) time period
(I do not mean time.sleep(5) ). Till now, I have following script, but
I think there must be something more elegant.

eventFlag = False
while 1:
    time.sleep(0.01)
    seconds = time.time()
    if not int(seconds % (5)):
        if eventFlag:
            print "5 seconds, hurray"
            eventFlag = False
    else:
        eventFlag = True

The eventFlag is confusing.  Better:

dt = 5 # for instance
event_time = time.time()
while 1:
  #do every loop stuff
  now = time.time()
  if now >= event_time:
    event_time = now + dt
    event()

If you have multiple delayed events, quite possibly each with a different or even variable delta, store (future_time,func_to_call) pairs in a priority queue (heapq module).

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to