JPype 1.0.2 frissítés, könyvtárak a Java osztályok Pythonból való eléréséhez

Elérhető interlayer új kiadása JPype 1.0.2, amely lehetővé teszi a Python alkalmazások számára, hogy teljes hozzáférést kapjanak a Java nyelvű osztálykönyvtárakhoz. A Pythonból származó JPype segítségével Java-specifikus könyvtárak segítségével hozhat létre Java- és Python-kódot kombináló hibrid alkalmazásokat. A Jythontól eltérően a Java-val való integráció nem a JVM Python-változatának létrehozásával, hanem a megosztott memóriát használó mindkét virtuális gép szintjén történő interakcióval valósul meg. A javasolt megközelítés nemcsak jó teljesítmény elérését teszi lehetővé, hanem hozzáférést biztosít az összes CPython és Java könyvtárhoz. Projekt kód forgalmazza Apache 2.0 licenc alatt.

Nagy változások:

  • A túlterhelés-feloldás elkerülése érdekében gyorsítótár került a metódushívásokhoz, ami nagymértékben csökkenti a metódusfeloldás teljesítményre gyakorolt ​​hatását, különösen akkor, ha ugyanazt a túlterhelést többször hívják meg, mint a hurokvégrehajtás során.
  • Adattípustól függően 4-100-szor felgyorsul a listák, sorok és pufferek átvitele Java primitívek tömbjébe. A konverzió a memórián belüli pufferek optimalizált feldolgozását használja a Sequence API helyett. Ha Python pufferrel találkozik, csak az első elem konverzióját ellenőrzi, mivel ezek a pufferek homogének.
  • Leállítási műveletek feldolgozása (JPype 1.0.0-ban implementálva, de a változásnapló elkészítésekor kihagyták). A JPype most meghívja a JVM leállítási rutint, amely megpróbálja kecsesen kilépni. Ez számos viselkedésbeli változáshoz vezet. A nem háttér szálak (proxyhívások) mostantól nyitva tarthatják a JVM-et, amíg be nem fejeződnek. A proxyhívások a hívás befejezéséig leállnak, de megszakítási üzenetet kapnak. A fájlok most megfelelően bezáródnak és lemezre kerülnek, ha a szálak a várt módon kezelik a kivételt. Erőforrás-tisztító hook-ok és véglegesítők végrehajtásra kerülnek. Amikor szálak jönnek létre, az AtExit hook hívódnak. A démonon keresztül az automatikus szálcsatolás valósul meg a Pythonból származó JVM használatakor. A hibás kód, amely nem tudja megfelelően kezelni a száltisztítást, valószínűleg lefagy a leállítás végrehajtásakor. További dokumentáció a használati útmutatóban található.
  • A Throwable burkolója a várt eredmény helyett az Object burkolóját kapott, ami furcsa konverziókhoz vezetett a Python osztályokból.
  • Kijavítottuk azokat az elírási hibákat az importáló rendszerben, amelyek a „»jname» not found” hibát eredményezték.
  • Biztosítottuk, hogy a "^C" helyes előléptetésre került a KeyboardInterrupt alkalmazásban.
  • Javítva a szimbólumokkal kapcsolatos probléma a Python 3.5.3 óta. A PySlice_Unpack egy következő javítási kiadásban (3.5.4) került bevezetésre, és nem lett volna szabad használni.
  • Kijavítottunk egy hibát a numpy.linalg.inv fájlban, amely összeomláshoz vezetett. A problémát a JVM és néhány zavaros íz közötti kommunikációra vezették vissza. A javasolt megoldás a numpy.linalg.inv meghívása a JVM elindítása előtt.

Forrás: opennet.ru

Hozzászólás