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 және кейбір жағымсыз дәмдер арасындағы байланысқа байланысты болды. Ұсынылған шешім JVM іске қоспас бұрын numpy.linalg.inv шақыру болып табылады.

Ақпарат көзі: opennet.ru

пікір қалдыру