JPype 1.0.2 жаңыртылышы, Python'дон Java класстарына кирүү үчүн китепканалар

Жеткиликтүү жаңы катмар чыгаруу JPype 1.0.2, бул сизге Python тиркемелеринин Java класстарынын китепканаларына толук кирүү мүмкүнчүлүгүн уюштурууга мүмкүндүк берет. Python'дон JPype менен Java жана Python кодун айкалыштырган гибриддик тиркемелерди түзүү үчүн Java үчүн атайын китепканаларды колдоно аласыз. Jythonдон айырмаланып, Java менен интеграция JVM үчүн Python вариантын түзүү аркылуу эмес, жалпы эстутумду колдонгон эки виртуалдык машинанын деңгээлинде өз ара аракеттенүү аркылуу ишке ашат. Сунушталган ыкма жакшы көрсөткүчтөргө жетишүүгө гана мүмкүндүк бербестен, бардык CPython жана Java китепканаларына кирүү мүмкүнчүлүгүн берет. Долбоор коду жайылуу Apache 2.0 астында лицензияланган.

Негизги өзгөрүүлөр:

  • Ашыкча жүктөөнү чечүүдөн качуу үчүн ыкма чалууларына кэш кошулду, бул ыкманын чечилишинин эффективдүүлүгүн бир топ азайтат, өзгөчө, эгерде бир эле ашыкча жүктөө циклдердегидей көп жолу чакырылса.
  • Берилиштердин түрүнө жараша 4 эседен 100 эсеге чейин тизмелерди, кортеждерди жана буферлерди Java примитивдеринин массивдерине өткөрүү тездетилген. Трансформация Sequence API ордуна оптималдаштырылган эстутумдагы буферди иштетүүнү колдонот. Python буферине жолукканда, биринчи элемент гана конверсияга текшерилет, анткени бул буферлер бир тектүү.
  • Өчүрүү операцияларын башкаруу (JPype 1.0.0де ишке ашырылган, бирок өзгөртүүлөр журналын даярдоодо өткөрүп жиберилген). JPype азыр JVMдин өчүрүү процедурасын чакырат, ал көрктүү чыгууга аракет кылат. Бул бир нече жүрүм-турум өзгөрүүлөргө алып келет. Фондук эмес жиптер (прокси чалуулар) азыр JVMди алар токтотулганга чейин ачык кармай алат. Прокси чалуулары чалуу аяктаганга чейин өчүрүүнү иштетет, бирок токтотуу билдирүүсүн алат. Файлдар эми туура жабылды жана жиптер өзгөчө кырдаалды туура иштетсе, дискке тазаланат. Ресурстарды тазалоо илгичтери жана жыйынтыктоочулар аткарылды. Жиптер пайда болгондо, AtExit илгичтери чакырылат. Демон аркылуу, Pythonдон JVM колдонууда автоматтык жипти тиркеме ишке ашырылат. Жипти тазалоону талаптагыдай аткара албаган ката код өчүрүлгөндө илинип калышы мүмкүн. Кошумча документтер колдонуучунун колдонмосунда.
  • Throwable үчүн орогуч күтүлгөн натыйжанын ордуна Object үчүн орогуч алып жатты, бул Python класстарынан кызыктай конверсияларга алып келди.
  • Импорттоо тутумундагы каталар оңдолду, натыйжада "jname" табылган жок" катасы пайда болду.
  • KeyboardInterrupt'та "^C" туура жылдырылышы камсыздалган.
  • Python 3.5.3 менен белгиленген белги маселеси. PySlice_Unpack кийинки патч чыгарууда (3.5.4) киргизилген жана колдонулбашы керек болчу.
  • numpy.linalg.inv менен ката оңдолду. Маселе JVM менен numpyдин кээ бир варианттарынын ортосундагы жиптин өз ара аракетине байланыштуу. Сунушталган чечим JVMди баштоодон мурун numpy.linalg.inv чалуу болуп саналат.

Source: opennet.ru

Комментарий кошуу