我有一个目前用Python编写的系统,可以分为后端和前端层。 Python太慢了,所以我想用快速编译的语言重写后端,同时在Python中保留前端,以便从Python调用后端功能。这样做的最佳选择是什么?
我考虑过cython,但写作非常有限且麻烦,并没有那么快。从我记得的Boost Python for C ++开始,维护语言之间的桥梁非常烦人。有更好的选择吗?
我的主要因素是:
答案 0 :(得分:7)
带SWIG的C ++可以生成所需的所有粘合代码。只要你避免C ++和python之间的过度跳跃,它就会像你的C ++一样快。除非你做“奇怪”的事情,否则SWIG接口通常很容易生成。
答案 1 :(得分:2)
如果你使用了Jython,你可以轻松地(平凡地)调用Java后端例程。 Java的速度大约是c的两倍,比我上次检查时的python快了10倍。
答案 2 :(得分:1)
我不同意Boost :: Python。在包装现有的以c ++为中心的库并尝试不更改接口时,可能变得麻烦。但这不是你想要做的。
您希望将现有python解决方案的繁重工作推向更快的语言。这意味着您可以控制界面。
如果你控制界面,你可以保持它对python友好,并且bp友好(IE:避免像指针和不可变类型这样的问题,如l值)
在这种情况下,Boost :: Python可以像告诉它要从python调用哪些函数一样简单。