我無法終止掛起在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 !!!這樣可行。非常感謝。 >你的同時True:pass是不必要的燃燒CPU週期。 這只是爲了說明保持代碼最小化的問題。 – Dihlofos 2010-04-06 15:03:30