Je veux savoir comment appeler une fonction après un certain temps. J'ai essayé time.sleep() mais cela interrompt tout le script. Je veux que le script continue, mais après ??? secs appeler une fonction et exécuter l'autre script en même tempsRetards de temps Python
Répondre
Jetez un oeil à threading.Timer
. Il exécute votre fonction dans un nouveau thread.
from threading import Timer
def hello():
print "hello, world"
t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed
Si vous voulez une fonction à appeler après un certain temps et ne pas arrêter votre script que vous traitez intrinsèquement avec le code fileté. Si vous voulez définir une fonction à appeler et ne pas vous en préoccuper, vous devez soit utiliser explicitement le multi-threading, comme par exemple la réponse d'em Mark Byers, soit utiliser un framework de codage avec une boucle principale qui s'occupe de la distribution des fonctions. vous - comme tordu, qt, gtk, pyglet, et tant d'autres. N'importe lequel de ces éléments nécessiterait que vous réécriviez votre code afin qu'il fonctionne à partir de la boucle principale de ce cadre. C'est soit cela, soit écrire une boucle principale à partir de la vérification de l'événement vous-même sur votre code - Dans l'ensemble, si vous ne voulez que des appels à une seule fonction, threading.Timer est le moyen de le faire. Si vous voulez utiliser ces appels chronométrés pour boucler le programme comme cela est habituellement fait avec setTimeout de javascript, vous feriez mieux de sélectionner l'un des cadres de codage que j'ai énumérés ci-dessus et de refactoriser votre code pour en profiter.
Ce code ne fonctionne pas threading.Timer (30,0, self.timestart (fenêtre)) .start() Il appelle self.timestart, donnant la fenêtre arg, mais il fait immédiatement, et non après 30Secs Would J'ai demandé à Mark, mais je l'ai assez dérangé, et vous savez aussi ce que vous en dites :) – drnessie
import threading
def time_demo():
threading.Timer(5.0, time_demo()).start()
print 'Hello this is time demo function'
time_demo()
Votre code se bloque parce que vous avez une récursion infinie, vous devez enlever les parenthèses quand vous passez dans time_demo parce que vous devrait passer dans un pointeur de fonction. – cujo
- 1. Comparaison de temps Python
- 2. Différences de temps Python
- 3. Django: retards WSGI
- 4. JQuery - retards pendant l'animation
- 5. Problème de temps de Python
- 6. Actions de temps en Python
- 7. Définition des retards de l'info-bulle SWT
- 8. Analyse de 'chaîne de temps' avec Python?
- 9. Manipulation du temps en python
- 10. str en temps en python
- 11. problème du temps d'exécution Python-
- 12. Ajouter des durées de temps en Python
- 13. Génération d'un delta de temps dynamique: python
- 14. python intervalle de temps algorithme somme
- 15. Temps de traçage en Python avec Matplotlib
- 16. Temps de stockage en Python - Meilleur format?
- 17. Python datetime.strptime() Manger beaucoup de temps CPU
- 18. Python, datetime « intervalle de temps » pourcentage
- 19. l'animation d'un bouton avec des retards - iPhone
- 20. Utilisation de TCP pour les commandes en temps réel: l'algorithme de Nagle provoque des retards énormes, que dois-je faire?
- 21. Comment gérer les retards sur la connexion Telnet par programme?
- 22. Correction de retards dans les mises à jour d'orientation
- 23. R - Comment 'retarder' les retards ainsi que l'entrée de l'utilisateur
- 24. python twisted: récupérer un temps d'exécution différé
- 25. Python question sur le temps passé
- 26. Temps à l'heure décimale en Python
- 27. Calcul du temps python (milli secondes)
- 28. temps get python en quelques minutes
- 29. De nombreux utilisateurs, de nombreux processeurs, pas de retards. Bon pour le cloud?
- 30. Le module de temps python est-il suffisamment fiable pour mesurer le temps de réponse?
multithreading ... hmm, cela semble familier. N'est-ce pas là qu'il y a plus d'un processus? Eh bien de toute façon qui semble juste. Si j'utilise t.start() plus d'une fois, continue-t-il, me donne-t-il une erreur ou redémarre-t-il le minuteur? – drnessie
@drnessie: "N'est-ce pas qu'il y a plus d'un processus?" Non - c'est quand vous avez plus d'un thread. "si j'utilise t.start() plus d'une fois, est-ce que ça continue, donnez-moi une erreur ou redémarrez la minuterie?" - Vous obtenez une erreur 'RuntimeError: thread déjà démarré' que vous pouvez facilement vérifier par vous-même en dupliquant la dernière ligne du code source ci-dessus et en l'exécutant. –
Y at-il un moyen de se débarrasser de l'erreur, en dehors de l'arrêt puis redémarrage de la minuterie? – drnessie