JPype 1.0.2 naujinimas, biblioteka, skirta pasiekti Java klases iš Python

Galima nauja tarpsluoksnio versija JPype 1.0.2, kuri leidžia organizuoti visą Python programų prieigą prie Java klasės bibliotekų. Naudodami JPype iš Python, galite naudoti Java specifines bibliotekas, kad sukurtumėte hibridines programas, kurios derina Java ir Python kodus. Skirtingai nuo „Jython“, integracija su „Java“ pasiekiama ne kuriant „Python“ variantą JVM, o sąveikaujant abiejų virtualių mašinų lygiu, naudojant bendrą atmintį. Siūlomas metodas leidžia ne tik pasiekti gerą našumą, bet ir suteikia prieigą prie visų CPython ir Java bibliotekų. Projekto kodas išplatino licencijuota pagal Apache 2.0.

Pagrindiniai pakeitimai:

  • Prie metodų iškvietimų buvo pridėta talpykla, kad būtų išvengta perkrovos skiriamosios gebos, o tai labai sumažina metodo skiriamosios gebos poveikį našumui, ypač jei ta pati perkrova iškviečiama daug kartų, kaip ir ciklo vykdymo metu.
  • Nuo 4 iki 100 kartų, priklausomai nuo duomenų tipo, paspartinamas sąrašų, eilučių ir buferių perkėlimas į Java primityvų masyvus. Konversijai naudojamas optimizuotas atmintyje esančių buferių apdorojimas, o ne sekos API. Kai susiduriama su Python buferiu, tikrinamas tik pirmasis elementas, ar jis konvertuojamas, nes šie buferiai yra vienarūšiai.
  • Apdorojamos išjungimo operacijos (įdiegta JPype 1.0.0, bet buvo praleista ruošiant pakeitimų žurnalą). JPype dabar iškviečia JVM išjungimo tvarką, kuri bando gražiai išeiti. Tai lemia keletą elgesio pokyčių. Nefoninės gijos (tarpinio serverio skambučiai) dabar gali išlaikyti JVM atidarytą, kol bus baigtos. Tarpinio serverio skambučiai bus išjungti, kol skambutis bus baigtas, bet gaus pranešimą apie nutraukimą. Failai dabar tinkamai uždaromi ir nuleidžiami į diską, jei gijos tvarko išimtį, kaip tikėtasi. Vykdomi išteklių valymo kabliukai ir užbaigimo priemonės. Kai atsiranda siūlų, iškviečiami AtExit kabliukai. Per demoną automatinis gijų prijungimas įgyvendinamas naudojant JVM iš Python. Klaidingas kodas, kuris negali tinkamai išvalyti gijų, greičiausiai užges, kai bus išjungtas. Papildomą dokumentaciją galite rasti vartotojo vadove.
  • „Throwable“ įvynioklis vietoj laukto rezultato gavo „Object“ apvalkalą, dėl kurio atsirado keistų „Python“ klasių konversijų.
  • Ištaisytos importavimo sistemos rašybos klaidos, dėl kurių atsirado klaida „»jname» nerastas“.
  • Užtikrintas, kad „^C“ buvo tinkamai reklamuojamas naudojant „KeyboardInterrupt“.
  • Ištaisyta simbolių problema nuo Python 3.5.3 versijos. „PySlice_Unpack“ buvo pristatytas vėlesniame pataisos leidime (3.5.4) ir neturėjo būti naudojamas.
  • Ištaisyta klaida su numpy.linalg.inv, dėl kurios įvyko gedimas. Problema buvo atsekta dėl ryšio tarp JVM ir kai kurių niūrių skonių. Siūlomas sprendimas yra paskambinti numpy.linalg.inv prieš pradedant JVM.

Šaltinis: opennet.ru

Добавить комментарий