Bonjour,
Merci d'avoir modifier votre poste pour que le code soit bien formaté, on y voit plus clair.
Il y a plusieurs moyen de faire cela, tous sont basés sur le principe du "multi thread" (multi processing)
Ne vous inquiétez pas, c'est assez simple lorsque les fonctions le sont et sont peux nombreuses comme c'est le cas chez vous.
Vous pouvez faire donc ces 2 tâches dans un seul et même script
Inspirez vous du script ci-dessous :
On a ici 3 objets (class) pour qui on ne décrit qu'une méthode (run) et qui héritent des attributs de l'objet Thread.
J'y ai ajouté un nmax (nombre d'itérations) parmis les attributs.
Comme ils héritent de Thread, ils possèdent les attributs et méthodes de Thread (dont la méthode "start" qui va lancer la méthode "run" qui est décrite)
Important : pour arrêter un tel thread, on utilise la méthode join(), dans mon exemple ici cela va s'arrêter dès que i sera >= à nmax
Ex : app1.start() a lancé la méthode run de l'objet app1 qui est de class App1
app1.join() peut l'arrêter si nécessaire même en plein milieu du programme (par exemple, suite à une détection de l'action CTRL+C de l'utilisateur)
Code : Tout sélectionner
from threading import *
from time import *
class App1(Thread):
def __init__(self,nmax=5):
Thread.__init__(self)
self.nmax=nmax
def run(self):
for i in range(self.nmax):
print("thread 1")
sleep(1)
class App2(Thread):
def __init__(self,nmax=5):
Thread.__init__(self)
self.nmax=nmax
def run(self):
for i in range(self.nmax):
print("thread 2")
sleep(1)
class App3(Thread):
def __init__(self,nmax=5):
Thread.__init__(self)
self.nmax=nmax
def run(self):
for i in range(self.nmax):
print("thread 3")
sleep(1)
app1 = App1(2)
app2 = App2(4)
app3 = App3(5)
app1.start()
app2.start()
app3.start()
Partez de là, retirez la partie App3 / app3 puisque vous n'avez besoin que de 2 thread
App1 pourrait gérer le relais tandis que App2 traiterait le bouton
Evidement, il faudra commencer le programme par faire les initialisations nécessaires.
Les boucles while peuvent être du type While True si vous voulez (j'aime pas trop ça mais bon, c'est pas de la production)
Il y a aussi d'autres méthodes possibles en python certains membres du forums en proposeront peut-être d'autres.