如何在Linux上快速地将大型数据从C 发送到Python

How to send LARGE data from c++ to python in a fast way on Linux?

本文关键字:数据 Python 大型 Linux      更新时间:2023-10-16

从C 进程到Python过程(且浮点的较小尺寸Linux上从Python到C 的数据?注意:两个过程在同一PC上运行。

我尝试过:

  1. udp
  2. 共享内存

for UDP:
要发送的消息大于UDP消息约束(65535),因此直接使用sendto()会出现错误:消息太长。我也怀疑这是一种快速的方法(大约可以40〜50Hz可以)。

对于共享存储器:
共享内存似乎是将图像从C 发送到C 的快速方法。但是由于Python没有指针,因此我找不到在共享内存中读取和写入数据的方法。

那么,是否有快速的方法可以做上述IPC?或者也许是读写 unsigned char float 键入python中的共享内存的好方法?

mmap在两个应用程序中相同的文件,然后使用域插座来协调mmapped空间的使用。

在Linux上,您可以尝试管道。一个程序将"写入"管子文件,而另一个程序将"读取"它。在这种情况下,C程序将将图像字节的数组写入管道,而Python程序将读取字节流。
除非提前知道框架大小,否则您必须找到一种巧妙的方法来在框架之间使用定界符。

http://www.python-course.eu/pipes.php

否则,TCP插座就足够了。但是要小心 - 如果不关注所有功能的返回值或对消息长度做出假设,这里可能会出错很多。

您可以将两个应用程序内存与swig等工具相结合。

您也可以使用名为Pipe