Forum Programmation.python Threads et readline

Posté par  (site web personnel) .
Étiquettes : aucune
0
26
nov.
2005
Bonjour,

J'ai un petit problème que je n'arrive pas à résoudre :
mon prog possede 2 threads, le principal qui fait du traitement et un qui attend des commandes sur l'entrée standard. Le programme doit se terminer sur un SIGINT ou SIGTERM.
Or si mon thread principal se termine correctement mon 2ème continue tranquillement son travail ! Comment le terminer ?
Voici un petit code d'exemple :
#!/usr/bin/env python

import threading,sys,time,signal

class input(threading.Thread):
def __init__(self,input):
threading.Thread.__init__(self)
self.input = input

def run(self):
while 1:
line = self.input.readline().rstrip('\n')
if not line: break
print line

def doStuff():
while 1:
print "je fais qqchose"
time.sleep(10)

def exit(signum,frame):
print "exiting (%d) ..."%(signum)
sys.exit(signum)

if __name__=="__main__":
signal.signal(signal.SIGTERM, exit)
signal.signal(signal.SIGINT, exit)

background = input(sys.stdin)
background.start()

doStuff()


D'avance merci
  • # daemon thread

    Posté par  . Évalué à 3.

    Pour que le thread s'arrête avec le programme, tu peux le définir comme un "daemon thread" :
    class input(threading.Thread):
    	def __init__(self,input):
    		threading.Thread.__init__(self)
    		self.setDaemon(True)
    		self.input = input
    ....
    

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.