call a function every n mseconds
Josiah Carlson
jcarlson at nospam.uci.edu
Sat Feb 21 20:47:59 EST 2004
> How can I call a function every time a specified number of milliseconds
> elapses? Javascript has setInterval() function and I need something like
> that. Currently I use this:
> def function():
> [...]
> t = threading.Timer(n, function)
> t.start()
> function()
I guess it all depends on what you are doing. If you didn't need to do
anything else, and didn't want to deal with threads:
###beginning of code
import time
def runevery(msecs, function, args=(,), kwargs={}):
while 1:
function(*args, **kwargs)
time.sleep(msecs/1000.0)
###end of code
If you have other things to do:
###beginning of code
import time
timer = [time.time()]
def runevery(msecs, function, args=(,), kwargs={}):
global timer
if time.time() >= timer[0]:
timer[0] += msecs/1000.0
function(*args, **kwargs)
#call runfunct in some sort of mainloop like so:
while 1:
asyncore.poll(1) #or something like that
runevery(delay, function, args, kwargs)
###end of code
I hope this helps,
- Josiah
More information about the Python-list
mailing list