Oppdatering av JPype 1.0.2, et bibliotek for tilgang til Java-klasser fra Python

Tilgjengelig ny utgave av laget JPype 1.0.2, som gir full tilgang til Python-applikasjoner for Java-biblioteker. Med JPype kan Python bruke Java-spesifikke biblioteker, og lage hybride applikasjoner som kombinerer kode fra Java og Python. I motsetning til Jython oppnås integrasjon med Java ikke ved å lage en versjon av Python for JVM, men ved interaksjon på nivået til begge virtuelle maskiner, med delt minne. Den foreslåtte tilnærmingen gjør det mulig å oppnå god ytelse og gir tilgang til alle CPython- og Java-biblioteker. Koden for prosjektet distribueres under Apache 2.0-lisensen.

Hovedendringer:

  • Metodekall har fått en cache som unngår lastoppløsninger, noe som betydelig reduserer påvirkningen på ytelsen til metodeoppløsninger, spesielt når den samme overbelastningen kalles mange ganger, som under løkkekjøring.
  • Overføring av lister, tupler og buffere til Java primitive matriser er akselerert fra 4 til 100 ganger, avhengig av datatypen. Konverteringen bruker optimalisert bufferbehandling i minnet, i stedet for Sequence API. Når Python-bufferet møtes, sjekkes kun det første elementet for konvertering, siden dataleveransene er homogene.
  • Håndtering av shutdown-operasjoner (implementert allerede i JPype 1.0.0, men ble utelatt fra endringslisten). JPype kaller nå JVM shutdown-prosedyren, som prøver å avslutte på en 'grasiøs' måte. Dette fører til flere endringer i oppførselen. Ikke-bakgrunnstråder (proxy-kall) kan nå holde JVM åpen til de er fullført. Proxy-kall vil håndtere shutdown så lenge kallene er aktive, men vil motta et avbruddsvarsel. Filer lukkes nå som de skal og data skrives til disk (flush), hvis trådene håndterer unntak på riktig måte. Ryddehooker og finalizers kjøres. Ved opprettelse av tråder kalles AtExit-hookene. Gjennom demon er automatisk tilkobling av tråder implementert når JVM brukes fra Python. Feilkoden som ikke kan håndtere trådrenholdet riktig, vil sannsynligvis henge under shutdown. Ytterligere dokumentasjon finnes i brukermanualen.
  • Wrapper for Throwable fikk en wrapper for Object i stedet for forventet resultat, noe som førte til merkelige konverteringer fra Python-klasser.
  • Feilskrivinger i importsystemet er rettet, som fører til feil uten ‘»jname» not found’.
  • Korrekt videreformidling av ‘^C’ i KeyboardInterrupt er sikret.
  • Problemet med symboler med Python 3.5.3 er løst. PySlice_Unpack ble introdusert i den påfølgende patch-utgivelsen (3.5.4) og burde ikke ha blitt brukt.
  • Feilen med numpy.linalg.inv som førte til nedbrudd, er analysert. Problemet ble sporet til trådinteraksjon mellom JVM og noen versjoner av numpy. Det foreslåtte løsningen er å kalle numpy.linalg.inv før JVM startes.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster