JPype 1.0.2 更新,用于从 Python 访问 Java 类的库

可得到 新推出夹层 JPype 1.0.2,它允许Python应用程序完全访问Java语言的类库。 借助 Python 中的 JPype,您可以使用 Java 特定的库来创建结合 Java 和 Python 代码的混合应用程序。 与 Jython 不同,与 Java 的集成不是通过为 JVM 创建 Python 变体来实现的,而是通过使用共享内存在两个虚拟机级别进行交互来实现。 所提出的方法不仅可以实现良好的性能,还可以访问所有 CPython 和 Java 库。 项目代码 分发者 在 Apache 2.0 下获得许可。

主要变化:

  • 在方法调用中添加了缓存以避免重载解析,这大大降低了方法解析对性能的影响,特别是在多次调用相同重载的情况下,例如在循环执行期间。
  • 根据数据类型,列表、元组和缓冲区到 Java 基元数组的传输速度会加快 4 到 100 倍。 该转换使用内存缓冲区的优化处理,而不是 Sequence API。 当遇到 Python 缓冲区时,仅检查第一个元素是否转换,因为这些缓冲区是同构的。
  • 处理关闭操作(在 JPype 1.0.0 中实现,但在准备变更日志时被跳过)。 JPype 现在调用 JVM 关闭例程,该例程尝试正常退出。 这会导致行为上的一些变化。 非后台线程(代理调用)现在可以保持 JVM 打开,直到它们完成。 代理调用将处理关闭直到调用完成,但会收到中止消息。 如果线程按预期处理异常,文件现在会正确关闭并刷新到磁盘。 执行资源清理挂钩和终结器。 当线程产生时,AtExit 钩子被调用。 通过守护进程,实现了从Python使用JVM时的自动线程附加。 执行关闭时,无法正确处理线程清理的错误代码可能会挂起。 其他文档可以在用户手册中找到。
  • Throwable 的包装器收到了 Object 的包装器,而不是预期的结果,这导致了 Python 类的奇怪转换。
  • 修复了导入系统中导致错误“»jname» 未找到”的拼写错误。
  • 确保“^C”在键盘中断中正确提升。
  • 修复了自 Python 3.5.3 以来的符号问题。 PySlice_Unpack 是在后续补丁版本 (3.5.4) 中引入的,不应使用。
  • 修复了 numpy.linalg.inv 导致崩溃的错误。 该问题已追溯到 JVM 和某些 numpy 版本之间的线程通信。 建议的解决方案是在启动 JVM 之前调用 numpy.linalg.inv。

来源: opennet.ru

添加评论