为什么方法sys.exit(),exit(),提升SystemExit不起作用?

CS *_*mer 6 python sockets multithreading exit sys

我需要一个替代方法来杀死线程函数内部的python脚本.我的意图是当客户端输入0时杀死服务器...这是不行的,因为线程还没有被终止?这是我的代码:

socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
print 'Socket created'

try:
    socket.bind((HOST, PORT))
except socket.error, message:
    print 'Bind statement failed. ERROR: ' + str(message[0]) + ' Message: ' +    message[1]
    sys.exit()

print 'Socket Binding Successful'

socket.listen(10)
print 'Socket is currently listening'


def clientThread(connection):
    while 1:
        data = connect.recv(1024)
        try:
            quit = int(data)
        except:
            quit = 3
        if quit == 0:
            print 'Closing the connection and socket...'
            connect.close()
            socket.close()
            sys.exit(); //Alternative needed here...
            break
        reply = 'Ok....' + data
        if not data:
            break
        connect.sendall(reply)


while 1: #forever loop
    connect, address = socket.accept()
    print 'Just connected with ' + address[0] + ' : ' + str(address[1])
    start_new_thread(clientThread, (connect,))

socket.close()
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 9

问题是一切sys.exit()都是提高SystemExit.由于这发生在工作线程中,因此效果是停止该线程(异常不会跨线程传播).

您可以尝试向脚本需要终止的主线程发送信号,无论是通过您自己的某种机制,还是通过调用thread.interrupt_main().

对于大锤的方法,请致电os._exit().