Un petit soucis si qq'un peut me donner son avis,
j'ai ecrit ce code pour utiliser le timer :
import threading
t=''
def func():
print "ICI"
#t.cancel()
t = threading.Timer(5.0, func)
nb=10
i=0
for i in range(nb):
t.start()
t.cancel() # quel est l'effet de cette fonction ??
A l'exec le timer marche une fois il affihe ICI au bout de 5s, enter
et ca stoppe , et ensuite si je relance j'ai ce msg d'erreur, je ne
sais pas comment en sortir ?
En fait pour ne pas charger la CPU je veux boucler et executer un SQL
tout les x secondes definies dans le timer.
D:\Scripts\Essai_PROD\Essai\TESSI>D:\Scripts\Timer.py
Traceback (most recent call last):
File "D:\Scripts\Timer.py", line 10, in ?
t.start()
File "C:\Python23\lib\threading.py", line 404, in start
assert not self.__started, "thread already started"
AssertionError: thread already started
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent Pointal
Que me faut-il faire pour pouvoit boucler x fois avec le timer, et relancer le script sans qavoir ce pu... de message d'erreur ??
Si tu regardes la doc, Timer n'est qu'un Thread dont le démarrage est mis en attente quelques temps, après c'est un fonctionnement normal de thread (ie. tu ne peux pas le démarrer plusieurs fois).
Solution:
import time
def func(): while True: print "ICI" time.sleep(5.0)
On peut bien sûr faire un peu plus évolué sur la condition de boucle...
Ou encore créer une classe du genre: class LoopOver : def __init__(self,fct,period) : self.fct = fct self.period = period def __call__(self,*args,**kargs) : while True : self.fct(*args,**kargs) time.sleep(self.period)
t = threading.Timer(5.0, LoopOver(func,5.0))
&Co...
A+
Laurent.
Que me faut-il faire pour pouvoit boucler x fois avec le timer, et
relancer le script sans qavoir ce pu... de message d'erreur ??
Si tu regardes la doc, Timer n'est qu'un Thread dont le démarrage est
mis en attente quelques temps, après c'est un fonctionnement normal de
thread (ie. tu ne peux pas le démarrer plusieurs fois).
Solution:
import time
def func():
while True:
print "ICI"
time.sleep(5.0)
On peut bien sûr faire un peu plus évolué sur la condition de boucle...
Ou encore créer une classe du genre:
class LoopOver :
def __init__(self,fct,period) :
self.fct = fct
self.period = period
def __call__(self,*args,**kargs) :
while True :
self.fct(*args,**kargs)
time.sleep(self.period)
Que me faut-il faire pour pouvoit boucler x fois avec le timer, et relancer le script sans qavoir ce pu... de message d'erreur ??
Si tu regardes la doc, Timer n'est qu'un Thread dont le démarrage est mis en attente quelques temps, après c'est un fonctionnement normal de thread (ie. tu ne peux pas le démarrer plusieurs fois).
Solution:
import time
def func(): while True: print "ICI" time.sleep(5.0)
On peut bien sûr faire un peu plus évolué sur la condition de boucle...
Ou encore créer une classe du genre: class LoopOver : def __init__(self,fct,period) : self.fct = fct self.period = period def __call__(self,*args,**kargs) : while True : self.fct(*args,**kargs) time.sleep(self.period)