JPype 1.0.2 актуализация, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Java класовС ΠΎΡ‚ Python

На Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²Π° вСрсия Π½Π° мСТдинния слой JPype 1.0.2, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ пълСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π½Π° прилоТСния Π½Π° Python Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с класовС Π½Π° Java. Π‘ JPype ΠΎΡ‚ Python ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ спСцифични Π·Π° Java Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Ρ…ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΈ прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ ΠΊΠΎΠ΄ Π½Π° Java ΠΈ Python. Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Jython, интСграцията с Java сС постига Π½Π΅ Ρ‡Ρ€Π΅Π· ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Python Π·Π° JVM, Π° Ρ‡Ρ€Π΅Π· взаимодСйствиС Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° Π΄Π²Π΅Ρ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволява Π½Π΅ само Π΄Π° сС постигнС Π΄ΠΎΠ±Ρ€Π° производитСлност, Π½ΠΎ ΠΈ осигурява Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ всички CPython ΠΈ Java Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Код Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° разпространява сС ΠΎΡ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄ Apache 2.0.

Основни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ кСш към извикванията Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намалява Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π²ΡŠΡ€Ρ…Ρƒ производитСлността Π½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, особСно Π°ΠΊΠΎ Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ ΠΏΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡŠΡ‚ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° Ρ†ΠΈΠΊΡŠΠ».
  • ΠžΡ‚ 4 Π΄ΠΎ 100 ΠΏΡŠΡ‚ΠΈ, Π² зависимост ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½ΠΈ, сС ускорява ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° ΡΠΏΠΈΡΡŠΡ†ΠΈ, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ Π±ΡƒΡ„Π΅Ρ€ΠΈ към масиви ΠΎΡ‚ Java ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π±ΡƒΡ„Π΅Ρ€ΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° вмСсто Sequence API. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС срСщнС Π±ΡƒΡ„Π΅Ρ€ Π½Π° Python, само ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ сС провСрява Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅Π·ΠΈ Π±ΡƒΡ„Π΅Ρ€ΠΈ са Ρ…ΠΎΠΌΠΎΠ³Π΅Π½Π½ΠΈ.
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ Π² JPype 1.0.0, Π½ΠΎ бСшС пропуснато ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅). JPype сСга ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° Π·Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° JVM, която сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ Π΅Π»Π΅Π³Π°Π½Ρ‚Π½ΠΎ. Π’ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ няколко ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. ΠΠΈΡˆΠΊΠΈΡ‚Π΅ Π±Π΅Π· Ρ„ΠΎΠ½ (прокси повиквания) Π²Π΅Ρ‡Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π΄ΡŠΡ€ΠΆΠ°Ρ‚ JVM ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ°Ρ‚. ΠŸΡ€ΠΎΠΊΡΠΈ повикванията Ρ‰Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠΈ, Π½ΠΎ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅. Π€Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π²Π΅Ρ‡Π΅ сС затварят ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΈ сС ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΡ‚ Π½Π° диска, Π°ΠΊΠΎ Π½ΠΈΡˆΠΊΠΈΡ‚Π΅ сС справят с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ спорСд очакванията. Π˜Π·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ сС ΠΊΡƒΠΊΠΈ Π·Π° почистванС Π½Π° рСсурси ΠΈ Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ нишки, сС ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ AtExit ΠΊΡƒΠΊΠΈ. Π§Ρ€Π΅Π· Π΄Π΅ΠΌΠΎΠ½Π° сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° нишки, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° JVM ΠΎΡ‚ Python. Код с Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π΄Π° сС справи с почистванСто Π½Π° нишка, вСроятно Ρ‰Π΅ увиснС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС изпълни ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅. Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° докумСнтация ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π·Π° потрСбитСля.
  • ΠžΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° Π·Π° Throwable ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π·Π° Object вмСсто очаквания Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ странни прСобразувания ΠΎΡ‚ класовС Π½Π° Python.
  • ΠŸΠΎΠΏΡ€Π°Π²Π΅Π½ΠΈ са правописни Π³Ρ€Π΅ΡˆΠΊΠΈ Π² систСмата Π·Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ водят Π΄ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° β€žΒ»jnameΒ» Π½Π΅ Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎβ€œ.
  • Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ "^C" Π΅ повишСн ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π² KeyboardInterrupt.
  • ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ със символи слСд Python 3.5.3. PySlice_Unpack бСшС въвСдСн Π² послСдващо ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° корСкция (3.5.4) ΠΈ Π½Π΅ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°.
  • ΠŸΠΎΠΏΡ€Π°Π²Π΅Π½Π° Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° с numpy.linalg.inv, която Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ срив. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ прослСдСн Π΄ΠΎ нишкова комуникация ΠΌΠ΅ΠΆΠ΄Ρƒ JVM ΠΈ някои numpy разновидности. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΅ Π΄Π° сС ΠΈΠ·Π²ΠΈΠΊΠ° numpy.linalg.inv ΠΏΡ€Π΅Π΄ΠΈ стартиранС Π½Π° JVM.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€