2

是否可以像 boost.python 一样使用 Cython 编写 to-python 和 from-python 转换器?

编辑(根据评论请求,详细说明我们为什么喜欢这个):

我们目前有用 C++ 编写的代码,通过 boost.python 绑定到 Python。在这段 C++ 代码中,我们处理Blitz::Array<>'s。在我们当前的抽象方案中,Python 中的代码使用 NumPy ndarrays,而 C++ 中的代码使用Blitz::Arrays<>. 我们已经编写了一个numpy.ndarray可以以非常透明的方式从's转换为 's 的桥接器,Blitz::Array<>反之亦然。这座桥在某些情况下也可以避免抄袭,这是什么红利。

这种方法的问题:

  1. 可移植性:为不同版本的Python编译需要为每个版本的Python编译Boost.Python;

  2. 可记录性:在 C++ 代码中包含 Python 文档字符串不是很好。它阻碍了我们的开发人员实现漂亮的文档。它通常看起来修补且不完整;

  3. 构建速度:编译 boost.python 模板可能会很慢。我们使用 CMake 并行执行此操作以加快速度,但随后我们想用我们的项目创建一个普通的 Python 鸡蛋。你可能知道 setuptools/distutils 和 CMake 不能很好地混合,所以我们有一些不完整的方式来做这个领域的事情。

所以,考虑到 Cython 的前景,我想我们会尝试一下,找到一种不那么老套的方法来解决所有这些问题。我们已经有一个依赖的代码库,numpy.ndarray我想尽可能地利用它,以最少的编写和最大程度地重用我们的 C++ 代码库。因此,我的问题。

4

0 回答 0