Comment puis-je faire de cette minuterie toujours courir?
from threading import Timer
def hello():
print "hello, world"
t = Timer(30.0, hello)
t.start()
Ce code ne se déclenche la minuterie une fois.
Comment puis-je faire la minuterie toujours courir?
Merci,
mis à jour
ce qui est juste :
import time,sys
def hello():
while True:
print "Hello, Word!"
sys.stdout.flush()
time.sleep(2.0)
hello()
et ce:
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()
OriginalL'auteur zjm1126 | 2010-04-24
Vous devez vous connecter pour publier un commentaire.
Un
threading.Timer
exécute une fonction une fois. Cette fonction peut "courir pour toujours" si vous le souhaitez, par exemple:À l'aide de plusieurs
Timer
instances de la consommer de ressources importantes sans réelle valeur ajoutée. Si vous voulez être non-invasive de la fonction vous êtes à répéter toutes les 30 secondes, un moyen simple serait:et puis de planifier
makerepeater(30, hello)
au lieu dehello
.Pour les opérations plus sophistiquées, je recommande de la bibliothèque standard du module de sched.
salut alex, et savez-vous comment faire cela dans un therad ..merci
print
à partir d'un thread (en supposant qu'est ce que vous entendez par "therad") ne peut pas être une bonne idée -- lelogging
module est garanti d'être thread-safe,print
ne l'est pas. De toute façon, si vous planifiez le résultat demakerepeater
avecTimer
, il sera bien sûr (essayer de) s'exécute dans son propre thread.OriginalL'auteur Alex Martelli
Suffit de redémarrer (ou recréer), le minuteur au sein de la fonction:
Je sais, droit? Il me semble qu'à chaque réponse à cette question a été downvoted sans aucune explication.
L'auteur ou quelqu'un d'autre semble être à la traîne :/
cela ne fonctionne pas pour moi:
raise RuntimeError("thread already started")
pas sûr de ce que vous faites mal, qui fonctionne très bien dans 2.7.3 et 3.2.3 (une fois parenthèses sont ajoutées à la
print
). Pas d'exceptions.OriginalL'auteur paxdiablo
de filetage à l'importation de la Minuterie
il dépend de la partie que vous souhaitez exécuter pour toujours, si elle est en train de créer un nouveau fil de discussion, disons toutes les 10 secondes, vous pouvez effectuer les opérations suivantes
de threading import Minuterie
si c'est le bonjour tout le monde, vous voulez toujours courir, vous pouvez effectuer les opérations suivantes:
Recherche des boucles en python pour obtenir plus d'informations sur ce
OriginalL'auteur user202459
C'est mon code pour ce problème:
Un autre script de la page:
OriginalL'auteur samet kaya