JPype 1.0.2 -päivitys, kirjastot Java-luokkien käyttämiseen Pythonista

Saatavilla uusi välikerroksen julkaisu JPype 1.0.2, jonka avulla Python-sovelluksilla on täysi pääsy Java-kielisten luokkakirjastoihin. Pythonin JPypen avulla voit käyttää Java-spesifisiä kirjastoja luodaksesi hybridisovelluksia, jotka yhdistävät Java- ja Python-koodin. Toisin kuin Jython, integraatio Javaan ei tapahdu luomalla Python-variantti JVM:lle, vaan vuorovaikutuksella molempien virtuaalikoneiden tasolla jaetun muistin avulla. Ehdotettu lähestymistapa ei mahdollista vain hyvän suorituskyvyn saavuttamista, vaan tarjoaa myös pääsyn kaikkiin CPython- ja Java-kirjastoihin. Projektin koodi jakelija lisensoitu Apache 2.0:lla.

Suurimmat muutokset:

  • Menetelmäkutsuihin on lisätty välimuisti ylikuormitusresoluution välttämiseksi, mikä vähentää huomattavasti menetelmän resoluution suorituskykyä, varsinkin jos samaa ylikuormitusta kutsutaan monta kertaa, kuten silmukan suorituksen aikana.
  • 4-100 kertaa, tietotyypistä riippuen, listojen, monikoiden ja puskurien siirtoa Java-primitiivien ryhmiin nopeutetaan. Konversio käyttää muistissa olevien puskureiden optimoitua käsittelyä Sequence API:n sijaan. Kun Python-puskuri kohdataan, vain ensimmäinen elementti tarkistetaan muunnoksen varalta, koska nämä puskurit ovat homogeenisia.
  • Sammutustoimintojen käsittely (toteutettu JPype 1.0.0:ssa, mutta ohitettiin muutoslokia valmisteltaessa). JPype kutsuu nyt JVM-sammutusrutiinia, joka yrittää poistua sulavasti. Tämä johtaa useisiin muutoksiin käyttäytymisessä. Muut kuin taustasäikeet (välityspalvelinkutsut) voivat nyt pitää JVM:n auki, kunnes ne ovat valmiit. Välityspalvelimen puhelut sammutetaan, kunnes puhelu on valmis, mutta ne saavat keskeytysviestin. Tiedostot suljetaan nyt oikein ja huuhdellaan levylle, jos säikeet käsittelevät poikkeusta odotetulla tavalla. Resurssien puhdistuskoukut ja viimeistelyt suoritetaan. Kun lankoja syntyy, kutsutaan AtExit-koukkuja. Daemonin kautta automaattinen säikeen liittäminen toteutetaan käytettäessä Pythonin JVM:ää. Buginen koodi, joka ei pysty käsittelemään ketjun puhdistamista kunnolla, jää todennäköisesti jumiin, kun sammutus suoritetaan. Lisädokumentaatiot löytyvät käyttöoppaasta.
  • Throwablen kääre sai Objectin kääreen odotetun tuloksen sijaan, mikä johti oudoihin muunnoksiin Python-luokista.
  • Korjattu tuontijärjestelmän kirjoitusvirheet, jotka johtivat virheeseen »jname» not found.
  • Varmistettiin, että "^C" korotettiin oikein KeyboardInterruptissa.
  • Korjattu symbolien ongelma Python 3.5.3:n jälkeen. PySlice_Unpack otettiin käyttöön myöhemmässä korjaustiedoston julkaisussa (3.5.4), eikä sitä olisi pitänyt käyttää.
  • Korjattu numpy.linalg.inv-virhe, joka johti kaatumiseen. Ongelma on jäljitetty viestinnän ketjuun JVM:n ja joidenkin nuhjuisten makujen välillä. Ehdotettu ratkaisu on soittaa numeroon numpy.linalg.inv ennen JVM:n käynnistämistä.

Lähde: opennet.ru

Lisää kommentti