Est-il possible de planifier un événement en python sans multithreading? J'essaie d'obtenir quelque chose comme planifier une fonction à exécuter toutes les x secondes.Comment planifier un événement en python sans multithreading?
Répondre
Peut-être sched?
Vous pouvez utiliser une combinaison de signal.alarm
et un gestionnaire de signal pour SIGALRM
comme si répéter la fonction toutes les 5 secondes.
import signal
def handler(sig, frame):
print "I am done this time"
signal.alarm(5) #Schedule this to happen again.
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
L'autre option est d'utiliser le module sched qui vient avec Python, mais je ne sais pas si elle utilise des threads ou non.
Serv est probablement la voie à suivre pour cela, comme @eumiro souligne. Toutefois, si vous ne voulez pas faire cela, alors vous pouvez le faire:
import time
while 1:
#call your event
time.sleep(x) #wait for x many seconds before calling the script again
Est-ce ce que vous voulez? Cela bloquerait votre application pour 'x' secondes ne lui permettant complètement de rien faire. –
Sans filetage il est rarement judicieux d'appeler périodiquement une fonction. Parce que votre thread principal est bloqué par l'attente - il ne fait simplement rien. Toutefois, si vous voulez vraiment faire:
import time
for x in range(3):
print('Loop start')
time.sleep(2)
print('Calling some function...')
Je ce que vous voulez vraiment?
Je suis assez sûr que ce n'est pas ce qu'il voulait. :) –
Vous pouvez utiliser celery:
Céleri est asynchrone open source file d'attente de tâches/file d'attente de travail basé sur un message distribué passe. Il est axé sur le fonctionnement en temps réel, mais soutient la planification ainsi.
Les unités d'exécution, appelées tâches, sont exécutées simultanément sur un ou plusieurs noeuds de travail . Les tâches peuvent exécuter de manière asynchrone (en arrière-plan) ou synchrone (attendez que prêt).
et un exemple de code:
Vous voulez probablement voir le code par maintenant, voici donc un exemple de tâche en ajoutant deux numéros:
from celery.decorators import task
@task
def add(x, y):
return x + y
Vous peut exécuter la tâche en arrière-plan , ou attendre qu'elle se termine:
>>> result = add.delay(4, 4)
>>> result.wait() # wait for and return the result 8
Ceci est d'une utilisation plus générale que le problème que vous décrivez nécessite, cependant.
@Noufal Ibrahim: Merci pour la capture.Je n'ai pas remarqué que lorsque j'ai coupé et collé le code du site céleri que la partie '@ tâche' a été mal formatée. – hughdbrown
De rien Hugh. –
- 1. Problèmes avec time.sleep et Multithreading en Python
- 2. Python MultiThreading avec Urllib2 Édition
- 3. Explication des extensions Python multithreading
- 4. Événement inactif Linux En Python
- 5. Comment planifier une tâche en C++
- 6. Comment écrire un fichier XML sans en-tête en Python?
- 7. Comment planifier méthode appel en Objective C
- 8. Comment puis-je planifier un son d'alerte?
- 9. multithreading en utilisant tcplistener
- 10. Planifier un Microsoft Dynamics CRM 4.0 workflow
- 11. Socket fd en multithreading
- 12. WPF Multithreading
- 13. Comment planifier l'heure du test
- 14. Comment puis-je planifier un thread particulier dans Blackberry
- 15. Comment fonctionne Timer en Python, en ce qui concerne le multithreading?
- 16. GC.Collect et multithreading en C#
- 17. Comment puis-je planifier Debugs?
- 18. Calcul du temps restant pour un événement répété en Python
- 19. IE 6: Comment déboguer un événement sans tirer
- 20. déterminer la durée d'un événement en Python
- 21. Est-il possible dans .NET, en utilisant C#, d'obtenir un modèle asynchrone basé sur les événements sans multithreading?
- 22. Configuration de SVNKit en multithreading
- 23. Erreurs de multithreading en C#
- 24. WPF - Get DataTemplate sans événement
- 25. Multithreading dans C# comment utiliser?
- 26. Comment effectuer un événement aléatoire en Python en choisissant une variable aléatoire?
- 27. Comment simuler un événement tactile?
- 28. Multithreading: lecture/écriture dans un tube
- 29. Nutch Multithreading
- 30. Comment utiliser MultiThreading dans VB.NET?
Cela ressemble à être exactement ce que je cherche, merci. – relima
Si c'est exactement ce que vous cherchez, appuyez sur le bouton I-Love-Your-Answer. – hughdbrown