Bonjour à tous,
J'ai un programme qui lance plusieurs Thread. Lorsque je lance un signal sur mon processus main je voudrais qu'il termine les threads.
Mon problème est que mon programme intercepte bien les signaux mais uniquement si les threads n'ont pas été lancés.
Pour plus de clarté, voici mon code simplifié :
Si quelqu'un aurait une solution pour résoudre mon problème ou une piste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 #!/usr/bin/python # -*- coding: utf-8 -*- import os import sys import signal import wiringpi2 as wiringpi import MySQLdb as mdb from time import sleep from threading import Thread def stop_programme(signal, frame): print """STOP""" sys.exit(0) signal.signal(signal.SIGINT, stop_programme) ... def Fonctions ... class Sequence(Thread): """Chaque séquence est envoyée en Thread pour permettre une exécution parallèle""" def __init__(self, pinGPIO, sequenceList): Thread.__init__(self) self.pinGPIO = pinGPIO self.sequence = sequenceList self.stoprequest = False def run(self): """Parcours la sequence pour écrire les états GPIO sur la pin donnée""" while not self.stoprequest: for index, elt in enumerate(self.sequence): # wiringpi.digitalWrite(self.pinGPIO, elt[0]) print "Guirlande : %d" % self.pinGPIO sleep(elt[1]) def terminate(): self.stoprequest = True try: ... Début du programme ... Lancement des Threads except Exception, e: print repr(e) sys.exit(1)
Merci !
Partager