python - 使用 C++ 和 Python 访问数组

标签 python c++ arrays

我正在模拟一个由大约 100,000 颗恒星组成的迷你星系。我想在 Python 中进行可视化表示,在 C++ 中进行大量计算。使用 ctypes,我能够从 Python 调用 C++ 函数。

我基本上想要的是一个存在于 RAM 中的数组,它可以被 python 和 C++ 访问。然后在 python 中调用函数 update() 时,C++ 更新数组。重要的是,C++ 实际上只更改数组中的值。一直复制它会变得非常耗时。

我是一个初学者,尤其是在 C++ 方面,所以我真的不知道在哪里可以找到正确的信息,以及使用什么关键字。关于如何做到这一点的想法当然是受欢迎的,但是一些信息链接也将不胜感激。

最好的,

最佳答案

您可以使用 python C/C++ API 构建 C++ python 包装器模块:

https://docs.python.org/2/extending/extending.html

我会创建一个 C++ 模块 (dataUpdater) 使用 python API 提供服务,让我们调用它,update 它应该接收你想要加载数据的 Python 对象.

在您的 Python 端,每当我想从 C++ 加载数据时,我都会调用 dataUpdater.update

编辑:

另一种选择是让您的 C++ 模块表现得像一个提供数据访问服务的数据结构,例如:

  • getValueAt(索引)
  • setValueAt(index)
  • getSize()

并在 python 端使用它:

for i in xrange(dataUpdater.getSize()):
    val = dataUpdater.getValueAt(i)
    ...

关于python - 使用 C++ 和 Python 访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604323/

相关文章:

使用 Array.includes() 和测试重复项目的 JavaScript 问题

c++ - 这是一个有效的 makefile 吗?

c++ - 如何在 C++ 中创建动态分配的二维结构数组?

python - PyGObject 模板子项未定义

python - 如何自定义python rq的日志系统?

python - 为什么XGBoost安装中没有booster参数,而文档中却有?

python - Django 1.4 : I get an error in queryset extra

C++/Boost 字符串替换 : How do I replace '&' with '&' only when & ends with a ;

c++ - 为什么编译器在编译两个相似的类时输出不同?

arrays - 有没有办法使用 R 中的表达式/函数初始化数组