Lancer plusieurs threads depuis un bouton
Bonjour à tous :),
voilà je cherche à lancer plusieurs threads en cliquant sur un bouton seulement je n'y arrive pas sans que cela ne crash l'application, je m'explique :
Mon but est assez simple : je veux que lorsqu'un bouton est cliqué un thread contenant des actions "principales" à réaliser soit lancé mais également deux autres threads ( qui servent à mettre à jour les logs du programme ) simultanément seulement je n'y arrive d'aucune manière, avant toute chose voici la classe que j'utilise pour créer mes threads :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class GenericThread(QtCore.QThread):
def __init__(self, function, *args, **kwargs):
QtCore.QThread.__init__(self)
self.function = function
self.args = args
self.kwargs = kwargs
def __del__(self):
self.wait()
def run(self):
self.function(*self.args,**self.kwargs)
return |
Ensuite l'idée c'est de connecter mon fameux boutton à une fonction qui initialisera les 3 threads, mais quand je fais cela ça ne fonctionne pas.
Code:
1 2 3 4 5 6 7
| def launch_thread_principale(self):
self.GenThread_action_principale = GenericThread(self.action_principale)
self.GenThread_action_principale.start()
self.GenThread_log_1 = GenericThread(self.init_log_1)
self.GenThread_log_1.start()
self.GenThread_log_2 = GenericThread(self.init_log_2)
self.GenThread_log_2.start() |
Quand le bouton connecté a "launch_thread_principale" sera pressé, seul un thread ( le premier ) sera lancé ( si je me souviens bien car j'ai testé il y a une semaine ).
Si en revanche je fais 3 fonctions ( une pour chaque thread ) et que je fais trois connections au bouton, quand je clique l'application crash.
Merci d'avance !
EDIT IMPORTANT : jai changer le code de ma classe de thread je l'avais pas posté en entier !!