这是我用于我的udp服务器的一些代码。我的问题是当我调用方法terminate时,它只会在它从udp套接字接收到另一个消息后停止侦听循环。当我调用终止方法时,我想立即停止线程。或者有更好的方法来做到这一点?由于如何停止python中的udp套接字线程?
class StartThread:
def __init__(self):
self._running = True
self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
self.s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.s.bind(("0.0.0.0", 1234))
def terminate(self):
self._running = False
def run(self):
while self._running:
data, addr = self.s.recvfrom(1024)
c = StartThread()
t = Thread(target=c.run)
t.start()
你可以看看'import select'或'import twisted'(需要安装)以替代线程。 – User