Sauvegarde automatique par intervale de x secondes
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis a mes premiers jours d'apprentissage du langage python et je cherche a comprendre la gestion du temps. Je souhaiterais en autre créer une fonction qui exécute une action tout les X secondes tout en poursuivant son exécution. J'ai fait plusieurs recherche sur internet et je n'ai rien trouvé de fonctionnel sur internet et/ou compréhensible pour un débutant comme je suis.
# Sauvegarde def sauvegarde(info_a_save): with open("infosave.txt","a") as fichier: fichier.write(info_a_save + "\n") # Fin d'exécution def finrun(): exit() # Code s'exécutant en boucle tant qu'il n'est pas interrompu par un Ctrl+c while True: # Exemple de donnée a sauvegarder info_a_save = "Bonjour" # Connaissance manquante pour se qui suit if # intervalle de 29s: sauvegarde(info_a_save) elif # intervale de 300s: finrun()
Parmi mes recherches, j'ai en autre trouver le module Scheduler:
from apscheduler.scheduler import Scheduler sched = Scheduler() sched.start() def some_job(): print("Every 10 seconds") sched.add_interval_job(some_job, seconds = 10)
Mais j'ai l'erreur:
ModuleNotFoundError: No module named 'Scheduler'
J'ai pourtant fait l'installation via:
pip3 install scheduler
Merci a l'avance pour votre aide.
Windows / Firefox 104.0
- Sauvegarde automatique par intervale de x secondes
- Logiciel de sauvegarde automatique gratuit - Guide
- Site x - Guide
- Sites X : Pornhub, YouPorn et Redtube sont de nouveau accessibles en France - Guide
- Réponse automatique thunderbird - Guide
- Sauvegarde android - Guide
6 réponses
bonjour,
je ne comprends pas "une fonction qui exécute une action tout les X secondes tout en poursuivant son exécution".
Peux-tu donner un exemple?
Exemple poster plutot:
# Sauvegarde def sauvegarde(info_a_save): with open("infosave.txt","a") as fichier: fichier.write(info_a_save + "\n") # Fin d'exécution def finrun(): exit() # Code s'exécutant en boucle tant qu'il n'est pas interrompu par un Ctrl+c while True: # Exemple de donnée a sauvegarder info_a_save = "Bonjour" # Connaissance manquante pour se qui suit if # intervalle de 29s: sauvegarde(info_a_save) elif # intervale de 300s: finrun()
Salut,
c'est un problème de programmation temps-réel.
Donc, soit tu passes par un programme qui ne fait que lancer une tâche toutes les n secondes et en en faisant rien.
Soit tu t'arranges pour avoir un programme qui bosse et qui reçoit et traite une interruption toutes les n secondes afin de lancer la tâche. Mais là, il faut avoir un peu de bouteille car sauver un contexte d'exécution en temps réel (surtout si le programme principal est en attente de retour d'I/O par exemple), c'est touchy...
J'ai trouvé la solution, je suis pas sur qu'elle soit la meilleure, mais elle fonctionne
@noplou, je ne suis pas encore rendu a apprendre sur les thread, j'ai quand même fait une petite lecture tres rapide et j'ai trouvé cela tres intéressant. j'ai hate d'en faire l'expérimentation.
Au cas ou que d'autre cherche comme moi, voici se qui répondait à ma recherche:
import time global starttime starttime= 0.0 # Sauvegarde def sauvegarde(info_a_save): with open("infosave.txt","a") as fichier: fichier.write(str(info_a_save) + "\n") # Fin d'exécution def finrun(): exit() # Code s'exécutant en boucle tant qu'il n'est pas interrompu par un Ctrl+c while True: # Exemple de donnée a sauvegarder info_a_save = time.time() # Solution trouvé if starttime == 0.0: starttime = time.time() savetime = time.time() elif savetime+29 < time.time(): sauvegarde(info_a_save) savetime = time.time() elif starttime+300 < time.time(): finrun()
En fait, ton programme ne fait rien d'autre que lancer une fonction toutes les n secondes, donc entre ces lancements, il ne fait rien d'autre que regarder si les conditions de lancement sont réunies.
Ce qui est différent de ta demande initiale qui indique que le programme doit continuer son exécution.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPour le moment, effectivement, il ne fait rien, mais son but sera de surveiller certain processus Windows en autre avec la commande tasklist et de sauvegarder de facon régulière les résultats.
En développement pour le moment. J'étais bloqué sur la notion de sauvegarde de l'information trouvé. Maintenant que j'ai trouvé une solution, je peu m'attaquer à la récupération des données.