我使用一个文件在 Python 和 Ruby 脚本之间进行通信。但是,我们有 mmap。所以这是我的问题。
- 我可以用 mmap 做同样的事情(进程之间的通信)吗?
- 与物理文件相比,mmap 能给我们带来什么优势?加速?
- 在两个进程之间进行通信的最简单方法是什么?
- 在两个进程之间进行通信的最快方式是什么?
mmap 相对于物理文件的一个优势确实是加速,但任何东西都会比物理文件更快!
在进程之间进行通信的最简单方法是管道或套接字。它们更容易,因为它们是流,因此它们不会对您可以在进程之间交换的数据的长度施加限制,这与具有边界的文件或 mmap 相反。
这可能取决于您要传达的内容。如果您只是将大量数据集从一个应用程序提供给另一个应用程序,那么 mmap 文件可能是有意义的。如果您有消息,那么某种 IPC/RPC 协议可能会更好。如果您将数据从一个应用程序流式传输到其他管道/套接字可能会更好。
使用 mmap,您仍然必须将它们作为文件进行管理,因此您必须以一种同步的方式打开和关闭它们。这可能会影响性能,因此您可能想要使用流/管道。