处理器间通信,一个处理器写入,另一个读取

时间:2014-05-12 17:22:13

标签: python sockets process ipc

我使用ZeroMQ进行IPC。当一个进程侦听套接字(管道或unix套接字?),另一个进程写入时,它是否工作正常。

倾听的应用:

...
listener = IPCListener()
listener.startup_thread = Thread(target=listener.serve)
listener.startup_thread.daemon = True
listener.startup_thread.start()

class IPCListener()

    def __init__(self)
        self.context = zmq.Context.instance()
        self.sock = self.context.socket(znq.REP)
        self.sock.connection('ipc:///tmp/myapp')

    def serve(self):
        while True:
            message = self.sock.recv()
            response = self.handle_message(message)
            self.sock.send(response)

    def handle_message(self, message):
        if message == 'foo':
            do_something_useful()

这里是经理:

context = zmq.Context.instance()
sock = context.socket(zmq.REQ)
sock.bind('ipc:///tmp/myapp')
sock.send('foo')
response = sock.recv()
print response

问题是我需要运行我的应用程序的几个工作程序(进程)。不言而喻,我得到'sock.error: [Error 98] Already in use'

我不知道是否有一种方法可以让多个进程读取一个公共套接字?可能是zmq不可能,但是可以解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

处理此问题的常用方法是让主进程/线程侦听套接字,然后在收到消息后,将处理交给其中一个工作进程。