Përditësimi i JPype 1.0.2, biblioteka për të hyrë në klasat Java nga Python

Në dispozicion lëshimi i ri i ndërshtresës JPype 1.0.2, i cili lejon aplikacionet Python të kenë akses të plotë në bibliotekat e klasave në gjuhën Java. Me JPype nga Python, ju mund të përdorni biblioteka specifike të Java për të krijuar aplikacione hibride që kombinojnë kodin Java dhe Python. Ndryshe nga Jython, integrimi me Java nuk arrihet duke krijuar një variant Python për JVM, por përmes ndërveprimit në nivelin e të dy makinave virtuale që përdorin memorie të përbashkët. Qasja e propozuar lejon jo vetëm arritjen e performancës së mirë, por gjithashtu siguron akses në të gjitha bibliotekat CPython dhe Java. Kodi i projektit shperndare nga licencuar sipas Apache 2.0.

Ndryshimet kryesore:

  • Një cache është shtuar në thirrjet e metodave për të shmangur rezolucionin e mbingarkesës, gjë që redukton shumë ndikimin e performancës së zgjidhjes së metodës, veçanërisht nëse e njëjta mbingarkesë thirret shumë herë, si gjatë ekzekutimit të ciklit.
  • Nga 4 deri në 100 herë, në varësi të llojit të të dhënave, transferimi i listave, tuples dhe buffer-ave në vargje të primitivëve Java përshpejtohet. Konvertimi përdor përpunimin e optimizuar të buferave në memorie, në vend të API-së së Sekuencës. Kur haset një tampon Python, vetëm elementi i parë kontrollohet për konvertim, pasi këto bufera janë homogjene.
  • Operacionet e mbylljes së përpunimit (i implementuar në JPype 1.0.0, por u anashkalua gjatë përgatitjes së regjistrit të ndryshimeve). JPype tani e quan rutinën e mbylljes së JVM, e cila përpiqet të dalë me hijeshi. Kjo çon në disa ndryshime në sjellje. Temat jo në sfond (thirrjet proxy) tani mund ta mbajnë JVM të hapur derisa të mbarojnë. Thirrjet me përfaqësues do të përpunojnë mbylljen derisa telefonata të përfundojë, por do të marrin një mesazh ndërprerjeje. Skedarët tani mbyllen siç duhet dhe futen në disk nëse temat trajtojnë përjashtimin siç pritej. Janë ekzekutuar grepa për pastrimin e burimeve dhe finalizuesit. Kur fillohen fijet, thirren grepa AtExit. Nëpërmjet daemonit, bashkëngjitja automatike e fillit zbatohet kur përdoret JVM nga Python. Kodi i gabimeve që nuk mund të trajtojë siç duhet pastrimin e fillit ka të ngjarë të varet kur të ekzekutohet mbyllja. Dokumentacioni shtesë mund të gjendet në manualin e përdorimit.
  • Mbështjellësi për Throwable mori një mbështjellës për Object në vend të rezultatit të pritur, gjë që çoi në konvertime të çuditshme nga klasat e Python.
  • Rregulluar gabimet e shtypit në sistemin e importit që rezultuan në gabimin '»jname» nuk u gjet'.
  • U sigurua që "^C" të ishte promovuar saktë në KeyboardInterrupt.
  • Zgjidhur problemin me simbolet që nga Python 3.5.3. PySlice_Unpack u prezantua në një version të mëvonshëm patch (3.5.4) dhe nuk duhej të ishte përdorur.
  • Rregulloi një defekt me numpy.linalg.inv që çoi në një përplasje. Çështja është gjurmuar në komunikimin e fijeve midis JVM dhe disa shijeve të pakëndshme. Zgjidhja e propozuar është të telefononi numpy.linalg.inv përpara se të filloni JVM.

Burimi: opennet.ru

Shto një koment