5

我目前有一个用 Python 编写的系统,可以分为后端和前端层。Python 太慢了,所以我想用一种快速编译的语言重写后端,同时将前端保留在 Python 中,以一种允许从 Python 调用后端功能的方式。这样做的最佳选择是什么?

我考虑过 cython,但它非常有限且编写起来很麻烦,而且速度也没有那么快。根据我对 Boost Python for C++ 的记忆,维护语言之间的桥梁非常烦人。有更好的选择吗?

我的主要因素是:

  • 执行速度
  • 编译速度
  • 语言是陈述性的
4

3 回答 3

7

带有SWIG的C++可以生成您需要的所有胶水代码。只要您避免在 C++ 和 python 之间过度跳转,它就会和您的 C++ 一样快。SWIG 接口通常很容易生成,除非您正在做一些“奇怪”的事情。

于 2010-11-15T20:00:22.100 回答
2

如果您使用 Jython,您可以轻松(简单地)调用 Java 后端例程。我上次检查时,Java 的速度大约是 c 的两倍,比 python 快 10 倍。

于 2010-11-15T20:08:53.360 回答
1

我不同意 Boost::Python。包装现有的以 c++ 为中心的库并尝试不更改接口时,它可能会变得很麻烦。但这不是你想要做的。

您希望将现有 python 解决方案的繁重工作推向更快的语言。这意味着您可以控制界面。

如果您可以控制界面,则可以保持它对 python 和 bp 友好(IE:避免有问题的东西,如指针和不可变类型作为左值)

在这种情况下,Boost::Python 可以像告诉它你想从 python 调用哪些函数一样简单。

于 2010-11-19T16:59:34.690 回答