JPype 1.0.2 թարմացում, գրադարաններ Python-ից Java դասեր մուտք գործելու համար

Հասանելի է նոր շերտի թողարկում JPype 1.0.2, որը թույլ է տալիս կազմակերպել Python հավելվածների ամբողջական մուտքը Java դասի գրադարաններ։ Python-ից JPype-ի միջոցով դուք կարող եք օգտագործել Java-ին հատուկ գրադարաններ՝ ստեղծելու հիբրիդային հավելվածներ, որոնք համատեղում են Java և Python կոդը: Ի տարբերություն 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» չգտնված սխալի:
  • Ապահովեց «^C»-ի ճիշտ առաջխաղացումը KeyboardInterrupt-ում:
  • Շտկվել է նիշերի խնդիրը Python 3.5.3-ի հետ: PySlice_Unpack-ը ներկայացվել է հետագա կարկատակի թողարկման մեջ (3.5.4) և չպետք է օգտագործվեր:
  • Ուղղել է վթարը numpy.linalg.inv-ով: Խնդիրը հետագծվել է JVM-ի և numpy-ի որոշ տարբերակների միջև կապի հետ: Առաջարկվող լուծումն է՝ զանգահարել numpy.linalg.inv նախքան JVM-ն սկսելը:

Source: opennet.ru

Добавить комментарий