Cython:让python创建要用C++填充的内存
Cython: Let python create memory to be filled by C++
我有一个C++代码层,它通过UDP接收消息,并将这些消息解码为C指令。我想将此消息信息传递到此消息层顶部的应用程序层。应用层是用Python编写的,我们使用Cython在Python和C++之间架起桥梁。基本思想是让Python注册回调函数:
- 为C结构创建一个存储区域。由于Python将在其应用程序中使用C结构,我们希望让应用程序层负责创建实际内存。当C++层调用这个回调函数时,它应该返回指向C结构的存储区域的指针
- 向Python应用程序发出信号,表示C结构(在函数1中创建)的存储区域已填充了接收到的消息的数据
我正在努力解决的问题是:
- 如何将指针返回到Python创建的C结构,正确地返回到C++层
- 我应该在接收指针时调用指针上的Py_IncRef,在向python发出信号时调用指针的Py_DecRef吗?指针的存储区域现在充满了数据
非常感谢您的帮助。
为了在c++和cython之间交换数据,我会将数据安排为符合现有的概念证明之一,如Numpy。
请参阅此讨论。http://scipy-user.10969.n7.nabble.com/Share-memory-between-python-an-C-td11811.html
尤其要注意:http://gael-varoquaux.info/programming/cython-example-of-exposing-c-computed-arrays-in-python-without-data-copies.html?p=157
或者,我会完全使用一个标准化的框架来在语言之间的共享内存中进行通信(尽管这确实会浪费一些时间进行序列化和反序列化)在这种情况下,我可能会使用protobuf(谷歌代码)或类似的代码。https://pypi.python.org/pypi/protocyt/0.1.5
相关文章:
- 在c++中用vector填充一个简单的动态数组
- 如何使用用户输入在C++中正确填充2D数组
- 如何找到大小'x'数组是否完全填充,在C++?
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 通过for循环使用用户输入填充列表
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 如何正确填充在堆上分配的二维数组?
- 将数字转换为填充字符串
- 有没有办法在一行中填充矢量图
- 用C++中的数字和条件填充向量
- 用真值填充矢量
- 使用结构成员指针在C++中填充结构
- 流填充字符的默认定位
- 使用不同算法的 PKCS1v15 填充进行加密 ++ 签名
- C++:使用缓冲区中的数据填充结构
- 如何将零填充的多维数组传递给 C++ 中的函数?
- Cryptopp:获取密码输入的填充字符串
- 填充上编译器生成的复制构造函数之间的不一致
- RcppEigen 模板化函数,用于填充单位法线
- 我想生成许多矩阵并用随机数填充它