[Tutor] Repeat function until...
Dave Angel
davea at ieee.org
Wed Jun 23 16:34:12 CEST 2010
Steven D'Aprano wrote:
> On Wed, 23 Jun 2010 10:29:11 pm Nethirlon . wrote:
>
>> Hello everyone,
>>
>> I'm new at programming with python and have a question about how I
>> can solve my problem the correct way. Please forgive my grammar,
>> English is not my primary language.
>>
>> I'm looking for a way to repeat my function every 30 seconds.
>>
>
>
> The easiest way is to just run forever, and stop when the user
> interrupts it with ctrl-D (or ctrl-Z on Windows):
>
> # untested
> def call_again(n, func, *args):
> """call func(*args) every n seconds until ctrl-D"""
> import time
> try:
> while 1:
> start = time.time()
> func(*args)
> time.sleep(n - (time.time()-start))
> except KeyboardInterrupt:
> pass
>
> Of course, that wastes a lot of time sleeping.
>
>
But "wasting time" was the stated goal. If there's nothing else the
application needs to do, sleep() is perfect. I'm sure you know, but
maybe some others don't: sleep() uses essentially no CPU time, so the
other applications on the system get all the performance.
> As an alternative, you need to look at threads. That's a big topic, you
> probably need to read a How To or three on threads.
>
>
Only if there's other things that need doing in the same application.
DaveA
More information about the Tutor
mailing list