¿Cómo puedo hacer que este temporizador funcione para siempre?

from threading import Timer def hello(): print "hello, world" t = Timer(30.0, hello) t.start() 

Este código solo dispara el temporizador una vez.

¿Cómo puedo hacer que el temporizador funcione para siempre?

Gracias,

actualizado

esto es correcto :

 import time,sys def hello(): while True: print "Hello, Word!" sys.stdout.flush() time.sleep(2.0) hello() 

y esto:

 from threading import Timer def hello(): print "hello, world" sys.stdout.flush() t = Timer(2.0, hello) t.start() t = Timer(2.0, hello) t.start() 

Un threading.Timer ejecuta una función una vez . Esa función se puede “ejecutar para siempre” si lo desea, por ejemplo:

 import time def hello(): while True: print "Hello, Word!" time.sleep(30.0) 

El uso de varias instancias de Timer consumiría recursos sustanciales sin un valor agregado real. Si quieres ser no invasivo a la función que estás repitiendo cada 30 segundos, una forma simple sería:

 import time def makerepeater(delay, fun, *a, **k): def wrapper(*a, **k): while True: fun(*a, **k) time.sleep(delay) return wrapper 

y luego programe makerepeater(30, hello) lugar de hello .

Para operaciones más sofisticadas, recomiendo la progtwigción estándar de módulos de biblioteca.

Simplemente reinicie (o vuelva a crear) el temporizador dentro de la función:

 #!/usr/bin/python from threading import Timer def hello(): print "hello, world" t = Timer(2.0, hello) t.start() t = Timer(2.0, hello) t.start() 

desde el temporizador de importación de subprocesos depende de qué parte desea ejecutar para siempre, si está creando un nuevo subproceso, digamos que cada 10 segundos puede hacer lo siguiente desde el temporizador de importación de subprocesos

 import time def hello(): print "hello, world" while True: #Runs the code forever over and over again, called a loop time.sleep(10)#Make it sleep 10 seconds, as to not create too many threads t = Timer(30.0, hello) t.start() 

Si es el mundo de hola que quieres ejecutar para siempre, puedes hacer lo siguiente:

 from threading import Timer def hello(): while True: # Runs this part forever print "hello, world" t = Timer(30.0, hello) t.start() 

Busca bucles en python para obtener más información sobre esto

Este es mi código para este problema:

 import time from threading import Timer class pTimer(): def __init__(self,interval,handlerFunction,*arguments): self.interval=interval self.handlerFunction=handlerFunction self.arguments=arguments self.running=False self.timer=Timer(self.interval,self.run,arguments) def start(self): self.running=True self.timer.start() pass def stop(self): self.running=False pass def run(self,*arguments): while self.running: self.handlerFunction(arguments) time.sleep(self.interval) 

Otra página de script:

 def doIt(arguments): #what do you do for argument in arguments: print(argument) mypTimer=pTimer(2,doIt,"argu 1","argu 2",5) mypTimer.start()