Hilo de Python, los hilos no se cierran

Tengo un progtwig Python y cuando salgo de la aplicación con Ctrl-c , el script no se cierra. Mi proceso todavía se muestra en los procesos en ejecución.

#!/usr/bin/env python import socket import threading import Queue import serial import mysql.connector from datetime import datetime, date, time host = '0.0.0.0' port = 1024 buffer = 102400 my_queue = Queue.Queue() class readFromUDPSocket(threading.Thread): def __init__(self, my_queue): threading.Thread.__init__(self) self.my_queue = my_queue def run(self): while True: buffer1,addr = socketUDP.recvfrom(buffer) self.my_queue.put(buffer1) print 'UDP received' class readFromSerial(threading.Thread): def __init__(self, my_queue): threading.Thread.__init__(self) self.my_queue = my_queue def run(self): while True: buffer2 = ser.readline(eol=';') if buffer2: self.my_queue.put(buffer2) print 'Serial received' class process(threading.Thread): def __init__(self, my_queue): threading.Thread.__init__(self) self.my_queue = my_queue self.alive = threading.Event() self.alive.set() def run(self): while True: buffer3 = self.my_queue.get() today = datetime.now() timestamp = today.strftime("%A, %B %d, %Y %H:%M:%S") print 'Data pushed at:', timestamp print buffer3 if buffer3.startswith('temp:'): temp = buffer3.replace('temp:','') cnx = mysql.connector.connect(user='root', password='xxxxx', database='temperature') cursor = cnx.cursor() cursor.execute("INSERT INTO temperature.temperature (time,temperature) VALUES (%s, %s)", [timestamp, temp]) print 'Data inserted into Database' cnx.commit() cursor.close() cnx.close() if __name__ == '__main__': # Create socket (IPv4 protocol, datagram (UDP)) and bind to address socketUDP = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) socketUDP.bind((host, port)) ser = serial.Serial('/dev/ttyUSB0', 57600, timeout=2) # Instantiate & start threads myServer = readFromUDPSocket(my_queue) mySerial = readFromSerial(my_queue) myDisplay = process(my_queue) myServer.start() myDisplay.start() mySerial.start() while 1: pass UDPSock.close() ser.close() 

¿Por qué el hilo de python no se cierra con Ctrl + c ?

Related of "Hilo de Python, los hilos no se cierran"

Necesitas hacer que el hilo sea un hilo daemon. Para hacer esto, agregue la siguiente línea después de llamar a init del Thread

 self.setDaemon(True) 

Un progtwig se cerrará cuando solo queden vivos los hilos del daemon, el hilo principal no es demoníaco, por supuesto

No pude matar mi subproceso de Python porque había establecido la opción shell=True en el comando process.Popen . Quité shell = True y luego pude matarlo.

Si el subproceso es un shell, entonces tendrá que eliminar las cosas que se están ejecutando antes de que el shell termine.