utilisation d'un threading, modifier la frequence d'appel
Bonjour à tous,
Je programme actuellement un "sequencer" à 8 pistes en pyhton. En fait c'est tout simplement un tableau booleen qui est lu avec un tempo(fréquence) précise.
exemple : on lit la une case du tableau tous les 5ms puis on incrémente la position du tableau etc ...
D'où l'utilisation d'un threading !
Cependant, j'ai le souhait de modifier "le tempo en temps réel" qui a pour conséquence de modifier le temps d'appel de la fonction "lecture du tableau".
et là je dois dire je ne sais pas faire, j'ai regardé plusieurs documents sur les threading en python mais aucun ne parle de modifier le temps d'appel de la fonction.
D'une manière plus détaillée voici ce que j'aimerais :
Tout d'abord voici la class que j'utilise (je l'ai prise quelque part sur le web)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import threading
import time
class Intervallometre(threading.Thread):
def __init__(self, duree, fonction, args=[], kwargs={}):
threading.Thread.__init__(self)
self.duree = duree
self.fonction = fonction
self.args = args
self.kwargs = kwargs
self.encore = True # pour permettre l'arret a la demande
def run(self):
while self.encore:
self.timer = threading.Timer(self.duree, self.fonction, self.args, self.kwargs)
self.timer.setDaemon(True)
self.timer.start()
self.timer.join()
def stop(self):
self.encore = False # pour empecher un nouveau lancement de Timer et terminer le thread
if self.timer.isAlive():
self.timer.cancel() # pour terminer une eventuelle attente en cours de Timer |
le moment où je l'utilise (t est le temps d'appel de la fonction sequence_temps_réel)
t= 60*1.0/(tempo*2)
jouer = Intervallometre(t,sequence_temps_reel)
jouer.setDaemon(True)
jouer.start()
En fait le tempo peut être modifié en temps réel, et là le t sera donc modifié et j'aimerais que cela modifie aussi la "jouer" sur la fréquence d'appel l
Est ce possible ?
Si oui comment ? Si non puis je utiliser autre chose pour le faire ?
Merci d'avance à tous pour votre réponse.
Stopper reprendre un threading
oui cela marche, bien. Merci encore Vincent !
j'ai encore malgré tout une autre question :
comment activer, stopper et reprendre un threading ?