欢迎访问宙启技术站
智能推送

使用multiprocessing.connection在Python中实现进程间消息传递

发布时间:2024-01-06 20:01:53

在Python中,可以使用multiprocessing.connection模块来实现进程间的消息传递。该模块提供了用于进程间通信的套接字类,可以使用它们来发送和接收消息。

下面是一个使用multiprocessing.connection实现进程间消息传递的例子:

from multiprocessing import Process
from multiprocessing.connection import Listener, Client

def server():
    address = ('localhost', 6000)
    listener = Listener(address)
    print('Server: listening on {}'.format(address))
    conn = listener.accept()
    print('Server: connection accepted from {}'.format(listener.last_accepted))
    
    while True:
        try:
            msg = conn.recv()
            print('Server: received message: {}'.format(msg))
            conn.send('Server: message received')
        except EOFError:
            break

    conn.close()
    listener.close()
    print('Server: connection closed')

def client():
    address = ('localhost', 6000)
    conn = Client(address)
    print('Client: connected to {}'.format(address))

    for i in range(5):
        msg = 'Message {}'.format(i)
        conn.send(msg)
        print('Client: sent message: {}'.format(msg))
        resp = conn.recv()
        print('Client: received response: {}'.format(resp))

    conn.close()
    print('Client: connection closed')

if __name__ == '__main__':
    server_process = Process(target=server)
    client_process = Process(target=client)
    
    server_process.start()
    client_process.start()
    
    server_process.join()
    client_process.join()

在这个例子中,我们创建了一个简单的服务器和一个客户端,它们在不同的进程中运行。

服务器使用multiprocessing.connection.Listener类来监听指定地址上的连接请求,并且在接收到连接请求时使用accept方法接受连接。然后,服务器可以使用recv方法接收来自客户端的消息,并使用send方法发送响应给客户端。

客户端使用multiprocessing.connection.Client类来连接到指定地址的服务器,并且可以使用send方法发送消息给服务器,并使用recv方法接收来自服务器的响应。

通过运行这个示例程序,你将看到服务器接收到来自客户端的消息并发送响应。

需要注意的是,multiprocessing.connection只能用于本地进程间通信,不能用于远程进程间通信。此外,它还支持身份验证和加密,以确保通信的安全性和可靠性。

希望这个例子能帮助你理解如何使用multiprocessing.connection在Python中实现进程间消息传递。