JPype 1.0.2 atjauninājums, bibliotēka, kas nodrošina piekļuvi Java klasēm no Python

Pieejams jaunā izlaiduma slānis JPype 1.0.2, kas ļauj Python lietotnēm nodrošināt pilnu piekļuvi Java valodas bibliotēku klasēm. Izmantojot JPype, Python var izmantot Java specifiskās bibliotēkas, izveidojot hibrīdas lietotnes, kas apvieno gan Java, gan Python kodu. Atšķirībā no Jython, integrācija ar Java tiek panākta nevis, izveidojot Python versiju JVM, bet gan, sadarbojoties abām virtuālajām mašīnām, izmantojot kopīgu atmiņu. Ieteiktais pieejas veids ļauj ne tikai sasniegt labu veiktspēju, bet arī nodrošina piekļuvi visām CPython un Java bibliotēkām. Projekta kods tiek izplatīts ir licencēts saskaņā ar Apache 2.0.

Galvenās izmaiņas:

  • Metodei pievienots kešatmiņas mehānisms, lai novērstu pārslodzes izšķiršanu, kas ievērojami samazina izpildes veiktspēju, īpaši, ja tiek izsaukta tā pati pārslodze vairākas reizes, piemēram, ciklu laikā.
  • Atkarībā no datu tipa sarakstu, tupļu un buferu pārsūtīšana uz Java primitīviem masīviem ir paātrināta no 4 līdz 100 reizēm. Pārvēršana izmanto optimizētu buferu apstrādi atmiņā, nevis Sequence API. Kad Python buferis tiek sastapts, tiek pārbaudīts tikai pirmais elements, jo dati buferos ir viendabīgi.
  • Shutdown operāciju apstrāde (tika ieviesta jau JPype 1.0.0, bet tika izlaista no izmaiņu saraksta). JPype tagad izsauc JVM shutdown procedūru, kas mēģina iziet ‘gracefully’ režīmā. Tas noved pie vairākiem uzvedības izmaiņām. Ne fonu pavedienus (proxy call) tagad var turēt JVM atvērtu, kamēr tie netiek pabeigti. Proxy izsaukumi apstrādās shutdown, līdz izsaukums nav pabeigts, bet saņems pārtraukšanas ziņojumu. Faili tagad tiek pareizi slēgti un dati tiek iztukšoti uz diska (flush), ja pavedieni apstrādā izņēmumus pareizajā veidā. Tiek veikti resursu attīrīšanas ķēdi un finalizatori. Pavedienu radīšanas laikā tiek izsaukti AtExit hooki. Caurskates realitāte automātiski pievieno pavedienus, lietojot JVM no Python. Kļūdas kods, kas nevar pareizi veikt pavediena attīrīšanu, iespējams, iestrēgs shutdown laikā. Papildu dokumentācija atrodama lietošanas rokasgrāmatā.
  • Throwable apvalks saņēma Object apvalku, nevis sagaidīto rezultātu, kas noveda pie dīvainām pārvēršanām no Python klasēm.
  • Tika labotas drukas kļūdas importēšanas sistēmā, kas noveda pie kļūdas ziņojuma ‘»jname» not found’.
  • Nodrošināta pareiza ‘^C’ pāreja KeyboardInterrupt.
  • Atrisināta problēma ar Python 3.5.3 simboliem. PySlice_Unpack tika ieviests turpmākajā pataisīšanas laidienā (3.5.4) un to nevajadzēja izmantot.
  • Tika izlabota kļūda ar numpy.linalg.inv, kas izraisīja kritienu. Problēma bija saistīta ar pavedienu mijiedarbību starp JVM un dažiem numpy variantiem. Ieteicamais risinājums ir izsaukt numpy.linalg.inv pirms JVM palaišanas.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster