传递NumPy数组到JPype,本章我们将启动一个Java虚拟机(JVM),并把一个NumPy数组发送到JVM。我们将使用标准的Java调用语法把接收到的数组打印出来。当然,你需要提前安装好Java。
具体步骤
首先,我们需要在JPype中启动JVM。
- 启动JVM。
JPype可以方便地找到默认的JVM路径。
- 打印
hello world
。
出于对传统的尊重,先打印hello world
。
- 传递NumPy数组。
创建一个NumPy数组,把它转换为Python列表并传递给JPype。之后就可以轻松打印出各个数组元素。
- 关闭JVM。
所有的事情都完成后,关闭JVM。
在JPype中,任何时刻都只能有一个JVM正在运行。如果忘记关闭JVM,有可能导致意想不到的错误。程序的输出如下。
本章的完整代码如下。
小结
JPype允许我们启动和停止一个Java虚拟机。JPype提供了对标准Java API调用的封装。本例中,我们通过使用JArray
封装,可以把Python列表传递到JVM并转换为Java数组。JPype使用了Java本地接口(JNI)。JNI实现了本地原生C语言代码和Java之间的桥接。遗憾的是,使用JNI会导致软件性能降低,因此使用JPype的时候要考虑到这一点。