JPype 1.0.2-opdatering, 'n biblioteek vir toegang tot Java-klasse vanaf Python

Beskikbaar nuwe vrystelling van tussenlaag JPype 1.0.2, wat jou toelaat om volle toegang van Python-toepassings tot Java-klasbiblioteke te organiseer. Met JPype van Python kan jy Java-spesifieke biblioteke gebruik om hibriede toepassings te skep wat Java- en Python-kode kombineer. Anders as Jython, word integrasie met Java nie bereik deur die skepping van 'n Python-variant vir die JVM nie, maar deur interaksie op die vlak van beide virtuele masjiene wat gedeelde geheue gebruik. Die voorgestelde benadering laat nie net toe om goeie werkverrigting te behaal nie, maar bied ook toegang tot alle CPython- en Java-biblioteke. Projek Kode versprei deur gelisensieer onder Apache 2.0.

Belangrikste veranderinge:

  • 'n Kas is by metode-oproepe gevoeg om oorladingsresolusie te vermy, wat die prestasie-impak van metode-resolusie aansienlik verminder, veral as dieselfde oorlading baie keer opgeroep word, soos tydens lusuitvoering.
  • Van 4 tot 100 keer, afhangend van die datatipe, word die oordrag van lyste, tupels en buffers na skikkings van Java-primitiewe versnel. Die omskakeling gebruik geoptimaliseerde verwerking van in-geheue buffers, in plaas van die Sequence API. Wanneer 'n Python-buffer teëgekom word, word slegs die eerste element vir omskakeling nagegaan, aangesien hierdie buffers homogeen is.
  • Verwerking afskakelbewerkings (geïmplementeer in JPype 1.0.0, maar is oorgeslaan tydens die voorbereiding van die veranderingslogboek). JPype noem nou die JVM-afsluitroetine, wat probeer om grasieus te verlaat. Dit lei tot verskeie veranderinge in gedrag. Nie-agtergrond-drade (proxy-oproepe) kan nou die JVM oop hou totdat hulle klaar is. Proxy-oproepe sal afsluiting verwerk totdat die oproep voltooi is, maar sal 'n afbreekboodskap ontvang. Lêers word nou behoorlik toegemaak en na skyf gespoel as die drade die uitsondering hanteer soos verwag. Hulpbronskoonmaakhakies en finaliseerders word uitgevoer. Wanneer drade geskep word, word AtExit-hake geroep. Deur die daemon word outomatiese draadaanhegting geïmplementeer wanneer die JVM van Python gebruik word. Buggy-kode wat nie die draadopruiming behoorlik kan hanteer nie, sal waarskynlik hang wanneer afskakeling uitgevoer word. Bykomende dokumentasie kan in die gebruikershandleiding gevind word.
  • Die omhulsel vir Throwable het 'n omhulsel vir Object ontvang in plaas van die verwagte resultaat, wat gelei het tot vreemde omskakelings van Python-klasse.
  • Vaste tikfoute in die invoerstelsel wat gelei het tot die fout '»jname» nie gevind nie'.
  • Het verseker dat "^C" korrek in KeyboardInterrupt bevorder is.
  • Probleem opgelos met simbole sedert Python 3.5.3. PySlice_Unpack is in 'n daaropvolgende pleistervrystelling (3.5.4) bekendgestel en moes nie gebruik gewees het nie.
  • Het 'n fout met numpy.linalg.inv reggestel wat tot 'n ongeluk gelei het. Die probleem is opgespoor na draadkommunikasie tussen die JVM en 'n paar numpige geure. Die voorgestelde oplossing is om numpy.linalg.inv te bel voordat die JVM begin word.

Bron: opennet.ru

Voeg 'n opmerking