Java 编写与Python接口的快速抽象的语言选择?

Java 编写与Python接口的快速抽象的语言选择?,java,c++,python,boost-python,Java,C++,Python,Boost Python,我目前有一个用Python编写的系统,可以分为后端层和前端层。Python太慢了,所以我想用一种快速编译的语言重写后端,同时用Python保留前端,以便从Python调用后端功能。这样做的最佳选择是什么 我考虑过cython,但它的编写非常有限和繁琐,而且速度也没有那么快。从我记忆的PythPython C++中,维护语言之间的桥梁是非常令人讨厌的。有更好的选择吗 我的主要因素是: 执行速度 编译速度 语言是陈述性的 C++with可以生成所需的所有粘合代码。只要你避免C++和Python之间

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

我考虑过cython,但它的编写非常有限和繁琐,而且速度也没有那么快。从我记忆的PythPython C++中,维护语言之间的桥梁是非常令人讨厌的。有更好的选择吗

我的主要因素是:

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

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

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

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

您希望将现有python解决方案的繁重工作推进到一种更快的语言中。这意味着您可以控制接口

如果您控制着这个接口,那么就可以使它对python友好,对bp友好(即:避免像指针和不可变类型这样有问题的东西作为l值)


在这种情况下,Boost::Python可以简单地告诉它要从Python调用哪些函数

你怎么认为cython跑得不快?您正在声明类型吗?这就是主要的加速点。Cython实际上是一个非常方便的工具,可以集成python和“c代码”。这一点也不麻烦。简单地说,编写那些有助于加速的函数,并使用cython将它们公开为库。+1我还建议使用SWIG。它很容易使用。不受支持的特性是某些运算符(new、delete等)的1/重载版本2/嵌套类,以及其他一些功能,但有一些解决方法,您将得到明确的警告。问题是,上次我检查时,jython使用的是相当过时的python版本。它甚至还有上下文管理器吗?@aaronasterling-它确实是一个旧版本,2.5.2rc2是最新版本。它确实有上下文管理器(我现在安装了一个副本),但它仍然缺少2.6和2.7中包含的许多功能,因此我更喜欢维护boost python绑定,而不是使用这么旧的版本D