如何解决作为客户端和服务器的 python 类的问题
我需要一个可以发送和接收消息的类。我定义了一个名为 Process 的类,它有两个字段:收件箱和发件箱。通过将消息放入发件箱,消息将被发送。此外,接收到的消息存储在收件箱中。 但是,下面的代码有问题:
进程不接收任何消息。如何解决这个问题?
import multiprocessing as mp
import pickle
import sys
import threading
import zmq
SERVERS = [('127.0.0.1',50000),('127.0.0.1',50001),50002)]
class SubscribeThread(threading.Thread):
def __init__(self,process):
threading.Thread.__init__(self)
self.process = process
def run(self):
context = zmq.Context()
socket = context.socket(zmq.SUB)
for ip,port in SERVERS:
socket.connect("tcp://{0}:{1}".format(ip,port))
while True:
message = socket.recv()
self.process.inbox.put(pickle.loads(message))
class PublishThread(threading.Thread):
def __init__(self,process):
threading.Thread.__init__(self)
self.process = process
def run(self):
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://{0}:{1}".format(self.process.ip,self.process.port))
while True:
message = self.process.outbox.get()
socket.send(pickle.dumps(message))
class Process:
def __init__(self,index):
self.ip,self.port = SERVERS[index]
self.inbox = mp.Queue()
self.outbox = mp.Queue()
self.subscribeThread = SubscribeThread(self)
self.subscribeThread.daemon = True
self.subscribeThread.start()
self.publishThread = PublishThread(self)
self.publishThread.daemon = True
self.publishThread.start()
def send_message(self,message):
self.outbox.put(message)
def receive_message(self):
return self.inbox.get()
if __name__ == '__main__':
process = Process(int(sys.argv[1]))
process.send_message("hello")
print(process.receive_message())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。