在Jython中使用NumPy和Cpython

gap*_*ppy 14 python java numpy jython cpython

必须使用商业Java库,并希望从Python中完成.Jython很强大,我很好,因为它背后有一些点发布.但是,我也想使用NumPy,这显然不适用于Jython.CPype和Java数字库之类的选项没有吸引力.前者基本上死了.后者大多不成熟,缺乏易用性和广泛接受NumPy.我的问题是:如何让Jython和Python代码互操作?我可以接受从Cpython或其他方式调用Jython.

Ale*_*lli 18

具有讽刺意味的是,考虑到Jython和Numeric(NumPy的祖先)是由同一个开发人员发起的(Jim Hugunin,后来又开始IronPython,现在在微软担任某种高级架构师职位,致力于各种动态语言支持对于.NET和Silverlight),在Jython中使用numpy 没有什么好方法.我所知道的最接近的是"jnumerical"项目 - (稀缺)文档在sourceforge上,但更新的来源是bitbucket.

"数字Python",jnumerical实现的,并不像它的numpy后代那样光滑和流线型,但它具有相同的功能并且分享了许多概念和哲学,所以也许你可以发现它可用 - 值得一试,至少.


小智 7

考虑使用execnet,它允许您结合Jython和CPython的优势,包括当前的NumPy.这里的缺点是你必须支付两个不同进程空间中两个解释器之间序列化/反序列化对象的成本.(您可以通过使用它对子进程的支持来避免网络开销.)但是考虑到您正在考虑具有类似(可能更高)开销的JPype,这样的组合可能会运行良好.确保您已适当地划分工作.

Jython开发人员(我是其中之一)正在考虑通过支持C Extension API来支持NumPy,但这确实是非常初步的规划.