Aktualizácia JPype 1.0.2, knižnice pre prístup k triedam Java z Pythonu

K dispozícii nové vydanie medzivrstvy JPype 1.0.2, ktorý umožňuje aplikáciám Python plný prístup ku knižniciam tried v jazyku Java. S JPype od Pythonu môžete použiť knižnice špecifické pre Java na vytváranie hybridných aplikácií, ktoré kombinujú kód Java a Python. Na rozdiel od Jythonu sa integrácia s Javou nedosahuje vytvorením variantu Pythonu pre JVM, ale interakciou na úrovni oboch virtuálnych strojov využívajúcich zdieľanú pamäť. Navrhovaný prístup umožňuje nielen dosiahnuť dobrý výkon, ale poskytuje aj prístup ku všetkým knižniciam CPython a Java. Kód projektu distribuovaný licencovaný pod Apache 2.0.

Hlavné zmeny:

  • K volaniam metód bola pridaná vyrovnávacia pamäť, aby sa zabránilo riešeniu preťaženia, čo výrazne znižuje vplyv rozlíšenia metódy na výkon, najmä ak sa rovnaké preťaženie volá mnohokrát, ako počas vykonávania slučky.
  • 4 až 100-krát, v závislosti od typu údajov, sa zrýchli prenos zoznamov, n-tic a vyrovnávacích pamätí do polí Java primitív. Konverzia využíva optimalizované spracovanie vyrovnávacích pamätí v pamäti namiesto sekvenčného API. Keď narazíte na vyrovnávaciu pamäť Pythonu, skontroluje sa konverzia iba prvého prvku, pretože tieto vyrovnávacie pamäte sú homogénne.
  • Spracovanie operácií vypnutia (implementované v JPype 1.0.0, ale bolo preskočené pri príprave changelogu). JPype teraz zavolá rutinu vypnutia JVM, ktorá sa pokúsi elegantne ukončiť. To vedie k niekoľkým zmenám v správaní. Vlákna, ktoré nie sú na pozadí (volania proxy) teraz môžu udržiavať JVM otvorené, kým nie sú dokončené. Proxy hovory budú spracovávať vypnutie, kým sa hovor nedokončí, ale dostanú správu o prerušení. Súbory sú teraz správne zatvorené a vyprázdnené na disk, ak vlákna spracujú výnimku podľa očakávania. Vykonajú sa háčiky na čistenie zdrojov a finalizátory. Keď sa vytvárajú vlákna, volajú sa háčiky AtExit. Prostredníctvom démona sa pri použití JVM z Pythonu implementuje automatické pripájanie vlákna. Chybný kód, ktorý nedokáže správne spracovať vyčistenie vlákna, sa pravdepodobne zablokuje, keď sa vykoná vypnutie. Dodatočnú dokumentáciu nájdete v používateľskej príručke.
  • Obal pre Throwable dostal obal pre Object namiesto očakávaného výsledku, čo viedlo k podivným konverziám z tried Pythonu.
  • Opravené preklepy v importnom systéme, ktoré viedli k chybe '»jname» not found'.
  • Zaistilo sa, že „^C“ bolo v KeyboardInterrupt správne povýšené.
  • Opravený problém so symbolmi od Pythonu 3.5.3. PySlice_Unpack bol predstavený v nasledujúcom vydaní opravy (3.5.4) a nemal sa používať.
  • Opravená chyba s numpy.linalg.inv, ktorá viedla k havárii. Problém bol vysledovaný v komunikácii medzi JVM a niektorými numpy príchuťami. Navrhovaným riešením je zavolať numpy.linalg.inv pred spustením JVM.

Zdroj: opennet.ru

Pridať komentár