python - 在不同设备上进行程序间通信的最简洁方法

标签 python c++ julia cross-platform interprocess

我需要确定分布在多台机器上的多个程序之间的通信方法。数据本身相当简单,由带有一些元数据描述符的可变长度 vector 组成。
每个程序“类型”都会将数据发送到其他 1 个程序类型,并希望看到它的回复。
给定程序的连接数随时间而变化,并且可以随时添加或删除程序。
程序可能分布在多个处理器上,这些处理器可能使用不同的操作系统,也可能是微处理器。
Example program structure
我以前没有真正面对过这样一个相互沟通的难题,我不确定最干净的方法是什么。我听说 ROS 可能有用,但它可能不适合 Windows 环境并且学习曲线陡峭。我可以想象在节点之间创建一个数据库,它可以充当一种黑板,但这感觉可能非常低效。如果使用套接字可以提高效率,那么如何管理/维护连接?
我目前的主要开发环境是 Julia,但我可以将数据移植到 C++ 或 Python 上,而不会带来太多不适。
我对想法和学习新事物持开放态度,但我不知道该走哪条路。任何智慧的金 block 将不胜感激。

根据评论中的要求,以下是一些附加信息:

  • 数据:数据是浮点数的 vector ,其大小可以从 1 个值到 1000 个值不等(可能更多取决于项目的其他方面,但我将其设置为原型(prototype)目的)。元数据采用 json 格式并提供诸如数组总长度和一些标识符(所有整数)等信息。
  • 可靠性:我可以在这里和那里处理一些错过的消息。我需要按照发送顺序的数据。因此,如果一个数据包在最近的一个数据包之后到达,它将被忽略。 (如果您指的是数据完整性,则数据在传输过程中不得损坏)。
  • 延迟:尽可能少的程序可能会开始引入错误,否则。话虽如此,出于原型(prototype)设计的目的,我可以坚持平均 10 毫秒,不规则的 100 毫秒。不过,我非常想保持这种状态。
  • 标准 IP 设施:您可以假设所有设备都有这些,是的。
  • 最佳答案

    也许看看一些成熟的东西(因此应该能够连接到你最终使用的任何一种语言),比如 Redis 或 RabbitMQ 会是明智的,因为你需要能够与许多不同的网络上的设备。无论哪种方式,都建议使用某种形式的中央集线器来处理其他设备之间的通信。

    关于python - 在不同设备上进行程序间通信的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63022761/

    相关文章:

    python - 如何在没有 root 权限的机器上安装 virtualenv

    python - 使用 py2neo 获取最短路径中的节点

    c# - 使用 P/Invoke 在托管和非托管回调链上引发异常

    c++ - 在数组 C++ 中搜索字符串索引

    c++ - 使用堆栈查看两个字符串是否相等

    julia - 为什么 julia 需要很长时间才能导入一个包?

    python - 正则表达式子电话号码格式在同一字符串上多次

    csv - Julia Web App 上传 CSV、应用函数、返回输出

    metaprogramming - 循环展开?在 Julia 中使用元编程

    python - 如何在 Python 中操作笛卡尔坐标?