【问题标题】:Request for suggestions on doing IPC/event capture请求有关进行 IPC/事件捕获的建议
【发布时间】:2012-02-06 11:41:46
【问题描述】:

我有一个简单的 python 服务器脚本,它分叉出 C++ 程序的多个实例(比如 N)。 C++ 程序会生成一些需要捕获的事件。

当前正在日志文件中捕获事件(每个分叉进程 1 个日志文件)。此外,我需要定期(T 分钟)获取事件在所有子进程中产生到 python 服务器或其他一些监听这些事件的程序的速率(仍然不确定)。根据这些事件的发生率,服务器可能会采取一些“重新行动”(比如减少分叉实例的数量)

我简要地查看了一些指针:

  • grep 日志文件 - 遍历正在运行的进程日志文件 (.running),过滤最后 T 分钟内生成的条目,分析数据并报告
  • socket ipc - 向 c++ 程序添加代码以将事件发送到某个服务器程序,该程序在 T 分钟后分析数据,报告并重新开始
  • redis/memcache (不完全确定) - 将代码添加到 c++ 程序以使用一些分布式存储来捕获所有生成的数据,T 分钟后分析数据,报告并重新开始

请告诉我你的建议。

谢谢

【问题讨论】:

  • 投票迁移到 Programmers.SE——根据定义,任何寻求建议而不是具体答案的事情都不属于 SO。

标签: c++ python ipc redis distributed


【解决方案1】:

如果时间不是最重要的(与启动的 C++ 程序中发生的任何事件相比,T 分钟听起来很长),那么不要让事情变得比需要的更复杂。忘记 IPC(套接字、共享内存等),只需让每个 C++ 程序记录您需要了解的有关时间/性能的信息,并让 python 脚本每 T 分钟检查一次您需要数据的日志。不要浪费时间把你可以用简单的方式做的事情过度复杂化

【讨论】:

    【解决方案2】:

    作为您的套接字 IPC 建议的替代方案,0mq 怎么样。它是一个可以在线程间、进程间或机器间级别上进行消息传输的库(在 C 中,具有可用的 python 绑定)。上手非常简单,而且非常快。

    我不隶属于它。我只是在评估它的其他用途,并认为它可能也适合您。

    【讨论】:

      猜你喜欢
      • 2013-05-08
      • 2014-08-29
      • 1970-01-01
      • 2013-12-14
      • 2011-05-20
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 2018-12-28
      相关资源
      最近更新 更多