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

添加評論