JPype 1.0.2 ažuriranje, biblioteke za pristup Java klasama iz Pythona

Dostupno izdanje novog sloja JPype 1.0.2, koji vam omogućuje organiziranje potpunog pristupa Python aplikacija bibliotekama klasa Java. Uz JPype iz Pythona, možete koristiti biblioteke specifične za Javu za stvaranje hibridnih aplikacija koje kombiniraju Java i Python kod. Za razliku od Jythona, integracija s Javom se ne postiže stvaranjem Python varijante za JVM, već interakcijom na razini oba virtualna računala koja koriste zajedničku memoriju. Predloženi pristup omogućuje ne samo postizanje dobrih performansi, već također omogućuje pristup svim CPython i Java bibliotekama. Kod projekta distribuira licenciran pod Apache 2.0.

Velike promjene:

  • Dodana je predmemorija pozivima metode kako bi se izbjeglo rješavanje preopterećenja, čime se uvelike smanjuje učinak razrješenja metode na izvedbu, osobito ako se isto preopterećenje poziva mnogo puta, kao u petljama.
  • Od 4 do 100 puta, ovisno o tipu podataka, ubrzava se prijenos lista, torki i međuspremnika u nizove Java primitiva. Transformacija koristi optimizirano rukovanje međuspremnikom u memoriji umjesto Sequence API-ja. Kada se naiđe na Python međuspremnik, samo se prvi element provjerava za konverziju, budući da su ti međuspremnici homogeni.
  • Rukovanje operacijama isključivanja (implementirano u JPype 1.0.0, ali preskočeno prilikom pripreme dnevnika promjena). JPype sada poziva proceduru gašenja JVM-a, koja pokušava elegantno izaći. To rezultira nekoliko promjena u ponašanju. Niti koje nisu u pozadini (proxy pozivi) sada mogu držati JVM otvorenim dok se ne prekinu. Proxy pozivi će obrađivati ​​gašenje dok se poziv ne završi, ali će primiti poruku o prekidu. Datoteke su sada ispravno zatvorene i isprane na disk ako niti pravilno obrađuju iznimku. Izvršavaju se kuke za čišćenje resursa i finalizatori. Kada se pokrenu niti, pozivaju se zakačke AtExit. Putem demona implementira se automatsko pričvršćivanje niti kada se koristi JVM iz Pythona. Pogrešni kod koji ne uspijeva ispravno obraditi čišćenje niti vjerojatno će se zaustaviti pri isključivanju. Dodatna dokumentacija nalazi se u korisničkom priručniku.
  • Omotač za Throwable dobivao je omotač za Object umjesto očekivanog rezultata, što je dovelo do čudnih konverzija iz Python klasa.
  • Ispravljene pogreške pri upisu u sustavu uvoza koje su rezultirale pogreškom '"jname" not found'.
  • Osigurano ispravno promoviranje "^C" u KeyboardInterruptu.
  • Riješen problem znakova s ​​Pythonom 3.5.3. PySlice_Unpack uveden je u sljedećem izdanju zakrpe (3.5.4) i nije se trebao koristiti.
  • Popravljeno rušenje s numpy.linalg.inv. Problem je povezan s interakcijom niti između JVM-a i nekih varijanti numpyja. Predloženo rješenje je pozvati numpy.linalg.inv prije pokretanja JVM-a.

Izvor: opennet.ru

Dodajte komentar