ny utgÄva av lager , som möjliggör full Ätkomst för Python-applikationer till Java-bibliotek. Med JPype kan Python anvÀnda specifika Java-bibliotek, vilket skapar hybridapplikationer som kombinerar kod i Java och Python. Till skillnad frÄn Jython uppnÄs integrationen med Java inte genom att skapa en variant av Python för JVM, utan genom interaktion pÄ nivÄn av bÄda virtuella maskiner, med anvÀndning av delad minne. Den föreslagna metoden gör det möjligt att uppnÄ hög prestanda samt ger tillgÄng till alla bibliotek i CPython och Java. Projektkoden Àr licensierad under Apache 2.0.
Huvudsakliga förÀndringar:
- En cache har lagts till vid anrop av metoder, vilket gör att vi kan undvika att lösa överlastningar, vilket avsevÀrt minskar pÄverkan pÄ prestandan vid metodupplösning, sÀrskilt om samma överlastning anropas mÄnga gÄnger, som under körning av loopar.
- Ăverföringen av listor, tuple och buffrar till Java-primitive arrayer har blivit mellan 4 och 100 gĂ„nger snabbare, beroende pĂ„ datatyp. Omvandlingen anvĂ€nder en optimerad hantering av buffrar i minnet istĂ€llet för Sequence API. NĂ€r Python-bufferten möts, kontrolleras endast det första elementet för omvandling, eftersom datan i buffrarna Ă€r homogen.
- Hantera shutdown-operationer (implementerat redan i JPype 1.0.0, men missades vid förberedelse av Àndringslistan). JPype kallar nu shutdown-proceduren för JVM, som försöker genomföra en utgÄng pÄ ett 'gracefully' sÀtt. Detta medför flera förÀndringar i beteendet. icke-bakgrundstrÄdar (proxy-anrop) kan nu hÄlla JVM öppen tills de avslutas. Proxy-anrop kommer att hantera shutdown sÄ lÀnge anropet inte Àr avslutat, men fÄ ett avbrottsmeddelande. Filer stÀngs nu korrekt och spolar data till disk (flush), om trÄdarna hanterar undantaget pÄ rÀtt sÀtt. Rensningshookar och finalizers genomförs. Vid skapande av trÄdar anropas AtExit-hooks. Genom demon implementeras automatisk sammanfogning av trÄdar nÀr JVM anvÀnds frÄn Python. Felaktig kod som inte korrekt kan hantera rensning av trÄdar kommer troligen att hÀnga vid utförande av shutdown. Ytterligare dokumentation finns i bruksanvisningen.
- Inslaget för Throwable fick en inslagning för Object istÀllet för det förvÀntade resultatet, vilket ledde till konstiga omvandlingar frÄn Python-klasser.
- Stavfel i import-systemet har ÄtgÀrdats, vilket ledde till att felet '»jname» not found' visades.
- Korrekt överföring av ' ^C ' i KeyboardInterrupt sÀkerstÀlld.
- Problemet med tecken med Python 3.5.3 har ÄtgÀrdats. PySlice_Unpack introducerades i den efterföljande patch-utgÄvan (3.5.4) och borde inte ha anvÀnts.
- Ett problem med numpy.linalg.inv som ledde till krasch har ÄtgÀrdats. Problemet spÄrades till trÄdinteraktion mellan JVM och vissa versioner av numpy. Det föreslagna lösningen Àr att anropa numpy.linalg.inv före körningen av JVM.
KĂ€lla: opennet.ru
