找到一种有效的方法,使用Python作为"粘合剂"将不同的语言库集成到一个项目中

Ale*_*ros 7 c++ python java nlp wrapper

我即将参与NLP相关项目,我需要使用各种库.一些是在Java中,另一些是在C/C++中(对于需要更高速度的任务),最后一些是在Python中.我正在考虑使用Python作为"粘合剂",并为每个我想要做的依赖于不同语言的任务创建包装类.为了做到这一点,例如,包装类将执行java程序并使用管道与它通信.我的问题是:

  1. 你认为这对cpu要求高且重复性高的任务有用吗?或者管道通信增加的开销是否过重?

  2. 你会建议还有其他(最好是简单的)架构吗?

Ste*_*n C 5

我只是建议不要这样做.

不要在C/C++中实现"为速度"的东西.性能好处是容易像你期望的那样大; 例如,与使用"最佳实践"设计和性能技术在Java中实现相比.

不要尝试将许多语言粘合在一起.您正在为自己设置许多可移植性问题,调试困难和可靠性问题; 例如,由于C/C++错误导致JVM崩溃.此外,语言之间的桥接存在性能开销,并且可能存在意外的瓶颈.(例如,您可能会发现由于线程问题,您的C/C++必须运行单线程,因此您无法在典型的多核系统上获得Java多线程的好处.)

相反,我建议您查找允许您使用一种语言实现整个应用程序的库.如果不可能,请将其设计为不同的语言组件是不同的可执行文件/进程,通过某种RPC,消息传递或其他方式进行通信.


Ign*_*ams 0

我会考虑使用JeppJPype,而不是使用 IPC。我会避免使用 Jython,因为将 C/C++ 库加载到 Java 中可能比加载到 CPython 中更困难。