Я не могу найти способ завершить поток, зависший в вызове socket.recvfrom ().Например, ctrl + c, который должен вызвать исключение KeyboardInterrupt, не может быть перехвачен.Вот скрипт, который я использовал для тестирования:
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
Основной поток (тот, который выполняет бесконечный цикл) завершается.Однако поток, который я явно создаю, продолжает висеть в recvfrom ().
Пожалуйста, помогите мне решить эту проблему.