主要变化:
- 在方法调用中添加了缓存以避免重载解析,这大大降低了方法解析对性能的影响,特别是在多次调用相同重载的情况下,例如在循环执行期间。
- 根据数据类型,列表、元组和缓冲区到 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