Cython:让Python创建内存,用C++填充

2024-05-15 02:09:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个C++层,通过UDP接收消息,并将这些消息解码成C结构。我想把这个消息信息传递到这个消息层之上的应用层。应用层用Python编写,我们使用Cython来在Python和C++之间进行桥接。 基本思想是让Python注册回调函数:

  1. 为C结构创建一个存储区域。由于Python将在其应用程序中使用C-struct,所以我们希望应用程序层负责创建实际内存。当C++层调用这个回调函数时,它应该返回指针到C结构的存储区域。在
  2. 向Python应用程序发出信号,C-struct(在函数1中创建)的存储区域中填充了接收到的消息的数据。在

我正在努力解决的问题是:

    <>如何返回指针,如Python创建的C结构,正确地指向C++层?在
  1. 我是否应该在接收指针时调用Py_incrif,在向python发送信号时调用指针上的Py_DecRef,指针的存储区域现在已充满数据?在

我们将非常感谢您的帮助。在


Tags: 数据函数py信息应用程序消息区域解码
1条回答
网友
1楼 · 发布于 2024-05-15 02:09:24

为了在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(google代码)或类似的代码。 https://pypi.python.org/pypi/protocyt/0.1.5

相关问题 更多 >

    热门问题