JPype 1.0.2 värskendus, teegid Java klassidele juurdepääsuks Pythonist

Saadaval vahekihi uus väljalase JPype 1.0.2, mis võimaldab korraldada Pythoni rakenduste täielikku juurdepääsu Java klassi teegidele. Pythoni JPype abil saate kasutada Java-spetsiifilisi teeke, et luua hübriidrakendusi, mis ühendavad Java ja Pythoni koodi. Erinevalt Jythonist ei saavutata Javaga integreerimist JVM-i Pythoni variandi loomise kaudu, vaid interaktsiooni kaudu mõlema virtuaalse masina tasemel, kasutades ühismälu. Kavandatud lähenemisviis võimaldab mitte ainult saavutada head jõudlust, vaid annab juurdepääsu ka kõigile CPythoni ja Java teekidele. Projekti kood jaotatud litsentsitud Apache 2.0 alusel.

Peamised muudatused:

  • Meetodikutstele on lisatud vahemälu, et vältida ülekoormuse lahendamist, mis vähendab oluliselt meetodi eraldusvõime mõju jõudlusele, eriti kui sama ülekoormust kutsutakse mitu korda, nagu tsükli täitmisel.
  • Sõltuvalt andmetüübist kiirendatakse loendite, korduste ja puhvrite ülekandmist Java primitiivide massiividesse 4 kuni 100 korda. Konversioon kasutab Sequence API asemel mälusiseste puhvrite optimeeritud töötlemist. Pythoni puhvri leidmisel kontrollitakse ainult esimese elemendi teisendamist, kuna need puhvrid on homogeensed.
  • Seiskamistoimingute töötlemine (rakendatud versioonis JPype 1.0.0, kuid muudatuste logi koostamisel jäeti vahele). JPype kutsub nüüd JVM-i sulgemisrutiini, mis üritab graatsiliselt väljuda. See toob kaasa mitmeid muutusi käitumises. Taustavälised lõimed (puhverserveri kõned) võivad nüüd hoida JVM-i avatuna, kuni need on lõpetatud. Puhverserveri kõned suletakse kuni kõne lõpetamiseni, kuid saavad katkestamisteate. Failid suletakse nüüd korralikult ja loputatakse kettale, kui lõimed käsitlevad erandit ootuspäraselt. Teostatakse ressursside puhastuskonksud ja lõpetajad. Kui niidid tekitatakse, kutsutakse välja AtExit konksud. Deemoni kaudu rakendatakse Pythoni JVM-i kasutamisel automaatset lõime kinnitamist. Lokaline kood, mis ei saa lõime puhastamisega korralikult hakkama, jääb sulgemisel tõenäoliselt hanguma. Lisadokumentatsiooni leiate kasutusjuhendist.
  • Throwable'i ümbris sai oodatud tulemuse asemel Objecti ümbrise, mis viis Pythoni klassidest kummaliste teisendusteni.
  • Parandasime impordisüsteemi kirjavead, mille tulemuseks oli tõrge '»jname» not found'.
  • Tagati, et "^C" tõsteti rakenduses KeyboardInterrupt õigesti.
  • Parandatud probleem sümbolitega alates Pythoni versioonist 3.5.3. PySlice_Unpack võeti kasutusele järgmises plaastriväljaandes (3.5.4) ja seda poleks tohtinud kasutada.
  • Parandatud viga saidil numpy.linalg.inv, mis viis krahhini. Probleemi jälitamine on JVM-i ja mõnede tuima maitsete vahelise suhtluse lõime. Pakutud lahendus on helistada enne JVM-i käivitamist numbrile numpy.linalg.inv.

Allikas: opennet.ru

Lisa kommentaar