使用物理文本文件的进程间通信
Inter-process communication using physical text files
我正在通过 websocket API 从我的经纪人那里实时读取财务数据。客户端写在Python。我有另一个读取该数据的 C++ 程序,但我与 python 脚本通信的方式是通过物理文本文件。
我的问题是...
1) 不断重写文本文件,每次打开、读取和关闭它是否会影响性能?如果是这样,什么是更好的方法呢?我的应用程序的性能至关重要。
2) 使用命名管道会是更好的选择吗?或者这与写入和读取文本文件几乎相同?
现代 OS 支持许多不同的 IPC。管道、命名管道、套接字、内存映射文件……选择一种解决方案完全取决于您的应用程序。但从广义上讲,所有这些都应该 "better" 而不是使用普通的旧文件。
由于 IPC 是由 OS 管理的对象,它们 不 依赖于用于编写各种进程的语言。一些 IPC 具有文件语义(管道、命名管道)。其他需要使用一些专用的系统原语(mmap)。但是 C++ 和 Python(以及许多其他语言)将支持所需的系统调用。事实上,IPC 很棒 可以帮助用不同语言编写的软件一起说话。
我正在通过 websocket API 从我的经纪人那里实时读取财务数据。客户端写在Python。我有另一个读取该数据的 C++ 程序,但我与 python 脚本通信的方式是通过物理文本文件。
我的问题是...
1) 不断重写文本文件,每次打开、读取和关闭它是否会影响性能?如果是这样,什么是更好的方法呢?我的应用程序的性能至关重要。
2) 使用命名管道会是更好的选择吗?或者这与写入和读取文本文件几乎相同?
现代 OS 支持许多不同的 IPC。管道、命名管道、套接字、内存映射文件……选择一种解决方案完全取决于您的应用程序。但从广义上讲,所有这些都应该 "better" 而不是使用普通的旧文件。
由于 IPC 是由 OS 管理的对象,它们 不 依赖于用于编写各种进程的语言。一些 IPC 具有文件语义(管道、命名管道)。其他需要使用一些专用的系统原语(mmap)。但是 C++ 和 Python(以及许多其他语言)将支持所需的系统调用。事实上,IPC 很棒 可以帮助用不同语言编写的软件一起说话。