【问题标题】:Inter-process communication using physical text files使用物理文本文件的进程间通信
【发布时间】:2015-04-10 06:17:54
【问题描述】:

我正在通过 websocket API 实时读取我的经纪人的财务数据。客户端是用 Python 编写的。我有另一个读取该数据的 C++ 程序,但我与 python 脚本通信的方式是通过物理文本文件。

我的问题是……

1) 每次都不断地重写文本文件、打开、读取和关闭它会影响性能吗?如果是这样,有什么更好的方法呢?我的应用程序的性能至关重要。

2) 使用命名管道会是更好的选择吗?或者这与写入和读取文本文件几乎相同?

【问题讨论】:

  • 是否不断重写文本文件,每次打开、读取和关闭它都会影响性能?
  • 写入文件很慢,管道很快。
  • 不确定我是否会将文本文件分类为 IPC IMO
  • 我明白了...命名管道是否适用于我的 Python 脚本和 C++ 程序之间的 IPC 应用程序?这是最简单、最有效的方法之一吗?
  • 请注意,“命名管道”在 UNIX/Linux 和 Windows 上有所不同。在 Windows 上,它们是进程之间的通信协议,可以在域中的不同机器上运行。在 Linux 上,它们由 inode 表示。

标签: python c++ pipe inter-process-communicat


【解决方案1】:

现代操作系统支持许多不同的IPC。管道、命名管道、套接字、内存映射文件……选择一种解决方案或另一种解决方案非常依赖于您的应用程序。但从广义上讲,它们都应该比使用普通旧文件“更好”。

由于 IPC 是由操作系统管理的对象,它们依赖于用于编写各种进程的语言。一些 IPC 具有文件语义(管道、命名管道)。其他需要使用一些专用的系统原语(mmap)。但是 C++ 和 Python(以及许多其他语言)将支持所需的系统调用。事实上,IPC 非常适合帮助用不同语言编写的软件一起交流。

【讨论】:

  • 为了清楚起见,不要尝试对命名管道进行映射! (我知道你没这么说)
猜你喜欢
  • 2012-06-19
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 2017-05-20
  • 2012-05-23
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
相关资源
最近更新 更多