Thread - Signal : Stop thread sur signal
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é :
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 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) |
Si quelqu'un aurait une solution pour résoudre mon problème ou une piste.
Merci ! :)