Problème de temps

Résolu/Fermé
martinmpl Messages postés 2 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 21 mai 2015 - Modifié par martinmpl le 19/05/2015 à 08:16
martinmpl Messages postés 2 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 21 mai 2015 - 21 mai 2015 à 15:43
Bonjour à tous !
J'ai un projet à réaliser et je suis tombé sur un problème lors de la programmation en python. Il faut que je code un programme qui permet d'utiliser un moteur pour bouger une partie d'un système plus grand (qui nous intéresse pas ici cependant), il faut que le mouvement se fasse de façon périodique, chaque seconde. Le moteur bouge puis ayant terminé l'action en moins de 1 seconde il faut faire attendre le moteur.
Voici ma première idée pour vous donner un exemple de ce qui marche mais qui ne me satisfait pas:

debut = time.time()
(ici il y a toute la partie avec le moteur qui fait son action)
fin = time.time()
temps_attente = 1-(fin - debut)
sleep(temps_attente)

Ce que le morceau de programme fait: on prend un temps nommé debut, le moteur fait son action (bouger vers une position prédéfini) puis on prend le temps fin, comme je veux que le tout prenne 1 seconde à s'exécuter je créé temps_attente et je fini par utiliser la commande sleep pour que l'action dure au total 1 seconde.

Cependant la commande sleep() fait que le programme se "met en pause" et attend, ce qui fait que le reste du programme est lui aussi "en pause" ce que je ne veux pas. Il me faudrait donc un moyen d'attendre en tout 1 seconde en considérant le temps que prend le moteur à agir et bien sûr sans utiliser la commande sleep()!

Merci d'avance pour toute réponse,
Si ce n'est pas clair j'essaierais d'expliquer autrement bien sûr!
Sur ce bonne journée à tous!

PS: je m'excuse si mon langage informatique / de programmation n'est pas parfait, j'apprends par moi même! :)
Autre chose j'utilise pygame et je crois avoir lu une commande permettant de créer un événement toute les x millisecondes mais je ne sais pas comment l'utiliser sachant que le morceau de programme n'est pas dans ma boucle while, la commande est pygame.time.set_timer(eventid, milliseconds).
je pourrais donné le programme en entier mais je ne pense pas que ça soit pertinent ^^'

1 réponse

martinmpl Messages postés 2 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 21 mai 2015
21 mai 2015 à 15:43
j'ai trouvé un moyen d'y parvenir en utilisant:
pygame.time.set_timer(USEREVENT+1, 1000)

puis en utilisant USEREVENT+1 comme condition:
if USEREVENT+1:
(suite du programme)
0