Je n'arrive pas à terminer un thread suspendu dans un appel socket.recvfrom(). Par exemple, ctrl + c qui doit déclencher une exception KeyboardInterrupt ne peut pas être interceptée. Voici un script que je l'ai utilisé pour les tests:python: impossible de terminer un thread bloqué dans l'appel socket.recvfrom()
from socket import *
from threading import Thread
from sys import exit
class TestThread(Thread):
def __init__(self,host="localhost",port=9999):
self.sock = socket(AF_INET,SOCK_DGRAM)
self.sock.bind((host,port))
super(TestThread,self).__init__()
def run(self):
while True:
try:
recv_data,addr = self.sock.recvfrom(1024)
except (KeyboardInterrupt, SystemExit):
sys.exit()
if __name__ == "__main__":
server_thread = TestThread()
server_thread.start()
while True: pass
Le fil conducteur (celui qui exécute boucle infinie) sorties. Cependant le thread que je crée explicitement, reste suspendu dans recvfrom().
S'il vous plaît, aidez-moi à résoudre ce problème.
Yahoo !!! Ça marche. Merci beaucoup. > votre temps Vrai: le passage brûle inutilement les cycles du processeur. C'était juste pour illustrer le problème en gardant le code au minimum. – Dihlofos