相关疑难解决方法(0)

如何退出多线程程序?

我只是在python中搞乱线程,写了这个基本的IM东西[底部的代码]

我注意到,当我用Cc杀死程序时它不会退出,它只是永远挂起.

我只是猜测它正在等待每个线程完成他们正在做的事情,但因为它是一个永远不会发生的无限循环.
所以我想我需要手动杀死每个线程,或者在killsignal进来时结束循环.
我该怎么做?

#!/usr/bin/env python
import threading
import socket

class Listen(threading.Thread):

    def run(self):
        conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        conn.bind(('', 2727))
        conn.listen(1)
        while True:
            channel, details = conn.accept()
            print str(details)+": "+channel.recv(250)
            channel.send("got it")
            channel.close()

class Shout(threading.Thread):

    def run(self):
        while True:
            try:    
                address = raw_input("who u talking to? ")
                conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                conn.connect((address, 2727))
                break
            except:
                print "can't connect to "+ str(address)
        while True:
            conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            conn.connect((address, 2727))
            conn.send(raw_input())
            conn.close()

listen = Listen().start()
shout = Shout().start()
Run Code Online (Sandbox Code Playgroud)

python multithreading

7
推荐指数
2
解决办法
8078
查看次数

Python SocketServer

我怎么能叫shutdown()SocketServer接收到某个消息"退出"之后?据我所知,调用serve_forever()将阻止服务器.

谢谢!

python sockets socketserver

6
推荐指数
2
解决办法
3627
查看次数

标签 统计

python ×2

multithreading ×1

sockets ×1

socketserver ×1