On Fri, 06 Jul 2007 14:40:16 -0700, Jonathan Shan wrote: > I am trying to call a function every 5 seconds. My understanding of > time.sleep() is during the sleep time everything "stops".
Not "everything", just the thread in which `sleep()` is called. > However, in my application, there are background processes that must be > running continuously during the five second interval. Then start them as threads and they will run all the time. > Thus, threading.Timer seems like a good function. Here is the relevant > code: > > # background processes > t = threading.Timer(5.0, function_name, [arguments]) > while True: > # Do background processes run inside while loop? > t.start() > > The above code generates an error: > AssertionError: thread already started > > Any hints on how to fix the error? A thread can only be started once but you try to start the `Timer` over and over. And you don't wait, so even if this would "work" you would start many, many `Timer`\s as fast as the ``while`` loop runs. The `Timer`\s would all run the function after five seconds. It's like:: while True: function_name(*arguments) just with a five second delay. > Also, do background processes run inside while loops? This question doesn't make much sense to me. Do ``while`` loops block other threads? No of course not. Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list