我有一个程序将在网络上的多个设备上运行。这些程序需要在彼此之间发送数据 - 指定的设备(不是所有设备)。
server = server.Server('192.168.1.10')
server.identify('device1')
server.send('device2', 'this will be pickled and sent to device2')
这是我需要做的一些基本示例代码。当然,它也需要接收。
当有人指向我MPI的方向时,我正在寻找使用Twisted构建我自己的简单消息传递服务器。我之前从未研究过MPI协议,该网站给出了相当模糊的例子。
MPI是一个好方法吗?还有更好的选择吗?
答案 0 :(得分:2)
有几个开源消息代理已经为您处理过这类内容,并且可以使用完整的API。
你应该看看:
你可以自己构建它,但这就像重新发明轮子一样(并且旁注:我实际上只是意识到在我开始查看现有解决方案之前我正在构建一个消息代理程序 - 构建一个需要一个很多工作)。
答案 1 :(得分:2)
MPI非常善于进行通信,以便在群集中的多台或多台机器上运行紧密耦合的程序。如果你正在运行非常松散耦合的程序 - 只是偶尔进行交互 - 或者机器比集群内部更分散,比如分散在局域网内 - 那么MPI可能不是你想要的。
答案 2 :(得分:1)
考虑使用ZeroMQ之类的内容。它支持最有用的消息传递习语 - 推/拉,发布/订阅等等,虽然你的问题不是100%明确你你需要什么,但我很确定你会发现回答那里。
他们有一个很棒的user guide here,而Python bindings已得到很好的发展和支持。一些代码示例are here。
答案 3 :(得分:0)
您可以实现MPI功能,以便在不同代码之间创建通信。在这种情况下,服务器程序应该使用不同的ID公开“MPI端口”。客户端应该查找此端口并尝试连接它们。只有服务器才能接受每个通信。通信建立后,代码可以在它们之间交换数据。
另一个可能性是在多指令MPI选项中运行不同的程序。在这种情况下,所有程序都是同时执行的,并且没有必要创建端口通信器。执行完成后,您可以在所选的程序组之间创建特定的通信器。
请告诉我你需要什么样的方法,我可以提供c代码来实现这些功能。