JPype 1.0.2 uppfærsla, bókasafn til að fá aðgang að Java flokkum frá Python

Laus ný útgáfa af millilagi JPype 1.0.2, sem gerir þér kleift að skipuleggja fullan aðgang Python forrita að Java bekkjabókasöfnum. Með JPype frá Python geturðu notað Java-sérstök bókasöfn til að búa til blendingaforrit sem sameina Java og Python kóða. Ólíkt Jython næst samþætting við Java ekki með því að búa til Python afbrigði fyrir JVM, heldur með samskiptum á stigi beggja sýndarvélanna sem nota sameiginlegt minni. Fyrirhuguð nálgun gerir ekki aðeins kleift að ná góðum árangri heldur veitir hún einnig aðgang að öllum CPython og Java bókasöfnum. Verkefnakóði dreift af leyfi samkvæmt Apache 2.0.

Helstu breytingar:

  • Skyndiminni hefur verið bætt við aðferðaköll til að forðast ofhleðsluupplausn, sem dregur mjög úr áhrifum aðferðarupplausnar, sérstaklega ef sama ofhleðsla er kallað oft, eins og við keyrslu lykkju.
  • Frá 4 til 100 sinnum, allt eftir gagnategund, er flutningi á listum, túllum og biðmunum í fylki Java frumefna hraðað. Umbreytingin notar bjartsýni úrvinnslu biðminni í minni, í stað Sequence API. Þegar Python biðminni kemur upp er aðeins athugað fyrir umbreytingu á fyrsta þættinum, þar sem þessir biðminni eru einsleitir.
  • Vinnsla af lokunaraðgerðum (útfært í JPype 1.0.0, en var sleppt þegar breytingaskráin var útbúin). JPype kallar nú JVM lokunarrútínuna, sem reynir að hætta á þokkafullan hátt. Þetta leiðir til nokkurra breytinga á hegðun. Þræðir sem ekki eru í bakgrunni (proxy símtöl) geta nú haldið JVM opnu þar til þeim er lokið. Umboðssímtöl munu vinna úr lokun þar til símtalinu lýkur, en fá skilaboð um að hætta við. Skrám er nú lokað almennilega og skolað á diskinn ef þræðir höndla undantekninguna eins og búist var við. Hreinsunarkrókar og lokatölur eru framkvæmdar. Þegar þræðir eru spawnaðir eru AtExit hooks kallaðir. Í gegnum púkann er sjálfvirk þráðatenging útfærð þegar JVM frá Python er notað. Buggy kóði sem ræður ekki almennilega við þráðhreinsun mun líklega hanga þegar lokun er framkvæmd. Frekari skjöl er að finna í notendahandbókinni.
  • Umbúðirnar fyrir Throwable fékk umbúðir fyrir Object í stað væntanlegrar niðurstöðu, sem leiddi til undarlegra umbreytinga frá Python flokkum.
  • Lagfærði innsláttarvillur í innflutningskerfinu sem leiddu til villunnar '»jname» fannst ekki'.
  • Gakktu úr skugga um að „^C“ hafi verið kynnt á réttan hátt í KeyboardInterrupt.
  • Lagað vandamál með tákn síðan Python 3.5.3. PySlice_Unpack var kynnt í síðari plásturútgáfu (3.5.4) og ætti ekki að hafa verið notað.
  • Lagaði villu með numpy.linalg.inv sem leiddi til hruns. Málið hefur verið rakið til þráðar samskipta milli JVM og sumra nötra bragða. Fyrirhuguð lausn er að hringja í numpy.linalg.inv áður en JVM er ræst.

Heimild: opennet.ru

Bæta við athugasemd