socket.recvfrom() 호출에 걸려있는 스레드를 종료 할 수있는 방법이 없습니다. 예를 들어 KeyboardInterrupt 예외를 트리거해야하는 ctrl + c는 발견 할 수 없습니다. 다음은 테스트를 위해 사용한 스크립트입니다.python : 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
주 스레드 (무한 루프를 실행하는 스크립트)가 종료됩니다. 그러나 내가 명시 적으로 작성한 스레드는 recvfrom()에 계속 머물러 있습니다.
제발 도와주세요.
Yahoo !!! 그거야. 고마워. > 참 : 통과시 불필요하게 CPU 사이클을 굽습니다. 이것은 코드를 최소한으로 유지하는 문제를 설명하기위한 것입니다. – Dihlofos