我正在研究一个由大约10万颗恒星组成的小星系的模拟。我想在Python中做的可视化表示,C++中的大计算。使用CyType,我能够从Python调用C++函数。在
<>我基本上想要的是一个数组,它在RAM中,可以用Python和C++访问。然后在Python调用函数UpDeDeO()时,C++更新数组。C++只改变数组中的值是很重要的。一直复制它会很费时。在
我是一个初学者,特别是C++,所以我真的不知道在哪里找到正确的信息,以及使用什么关键词。当然,欢迎考虑如何做到这一点,但一些信息链接也将非常感谢。在
最好的
Tags:
可以使用Python C/C++ API构建:C++ Python包装模块:
https://docs.python.org/2/extending/extending.html
< P>我将使用Python API创建一个C++模块(^ {CD1>}),提供一个服务,让它调用,^ {CD2>},它应该接收要加载数据的Python对象。在在您的Python端,每当我想从C++中加载数据时,我会调用^ {CD3>}
编辑:
其他选项是使C++模块的行为像数据结构提供数据访问服务,如:
getValueAt(index)
setValueAt(index)
getSize()
在python端使用它:
正确地做这件事实际上是相当复杂的。首先,你 {cd1>包中的Python}应该使用。然后, 您可以定义一个C接口,如中所述 https://docs.python.org/2/c-api/。(这是一本参考手册, 所以你可能想要阅读,并尝试 https://docs.python.org/2/extending/index.html第一)最多 重要的是,您需要使用缓冲区接口 (https://docs.python.org/2/c-api/buffer.html#bufferobjects) 访问
numpy
数组。在ctypes
似乎对连续数组有一定的支持 嗯,但我没有经验。如果你做任何处理 但是,对于Python端的数组,您需要使用numpy
,我不认为{关于这个问题,您应该完全查阅Python文档:
https://docs.python.org/2/extending/
考虑到doc,您可以定义一个新类型;假设恒星是一个双精度数组:
然后定义数学运算方法。。。(python文档)
^{pr2}$在新定义的类型(Galaxy)中包含这些方法非常简单,只需设置变量:
现在只需将Galaxy_方法var包含在适当的位置下
使用上面提到的python文档来实现new、alloc、dealoc和init方法(这些方法非常简单),就完成了!在
相关问题 更多 >
编程相关推荐