Python, thread et commande système
Bonjour,
Je me suis mis récemment à Python afin de développer des applications pour Gnome en utilisant la bibliothèque PyGTK. Cependant ma question ne concerne pas PyGTK. Actuellement, j'ai ma petite GUI et quand je clique sur le bouton "Ok" je veux que commande système s'exécute. J'ai essayé avec la commande ls par exemple et tout va bien en revanche j'ai tenter d'exécuter une commande dont le traitement est beaucoup plus long (encodage d'une vidéo). J'ai ainsi remarqué que ma GUI se fige (interface grisée) et impossible de l'utiliser, j'ai pensé que c'était donc un problème lié au fait que mon script Python n'utilisait pas de thread. J'ai donc déporté l'exécution de la commande système dans un thread mais le gros soucis que j'obtiens et que le thread ne démarre pas toujours dès l'appuie sur le bouton. Parfois oui parfois il faut attendre et on peut comme ceci lancer plusieurs fois la commande ce qui peut vite mettre à genoux le PC. Avez-vous une idée d'où cela peut provenir et aussi un moyen de régler ce soucis ?
Voilà comment je gère le thread si ça peut aider.
Le bouton ok va lancer la méthode suivante :
Code:
1 2 3 4
| def integrate(self, source = None, event = None):
integration = Integration(self.video, self.text, self.another_video)
integration.start() |
Et donc lancer un thread grâce à :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| class Integration(threading.Thread):
def __init__(self, video, text, another_video):
threading.Thread.__init__(self)
self.video = video
print 'Récuparation video = ' + self.video
self.text = text
print 'Récuparation text = ' + self.text
self.another_video = another_video
print 'Récuparation another_video = ' + self.another_video
def run(self):
print self.video + ' | ' + self.text + ' | ' + self.another_video |