Π½ΠΎΠ²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π°ΡΠ»ΠΎΡ , ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Python ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π΄Π° ΠΈΠΌΠ°Ρ ΠΏΡΠ»Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΠΎΡ ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π½Π° Java. Π‘ JPype ΠΎΡ Python ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° Java Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΡΠ·Π΄Π°Π²Π°ΠΉΠΊΠΈ Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ΅ΡΠ°Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π° Java ΠΈ Python. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ Jython, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Ρ Java Π½Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΠ΅Π· ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° Python Π·Π° JVM, Π° ΡΡΠ΅Π· Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΈ Π½Π° Π΄Π²Π΅ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π΄ΠΎΠ±ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, Π½ΠΎ ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²ΡΠΈΡΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ CPython ΠΈ Java. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Apache 2.0.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΠΎΠ±Π°Π²Π΅Π½ ΠΊΠ΅Ρ ΠΏΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΡΠ°Π·ΡeΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½ΠΈΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²Π»ΠΈΡΠ½ΠΈΠ΅ΡΠΎ Π²ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΠΏΡΠ΅Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠΊΠ»ΠΈ.
- ΠΡΠ΅Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΏΠΈΡΡΡΠΈ, ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΈ Π±ΡΡΠ΅ΡΠΈ Π² ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΎΡ Java-ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ Π΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΎ ΠΎΡ 4 Π΄ΠΎ 100 ΠΏΡΡΠΈ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΠΈ. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π±ΡΡΠ΅ΡΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Sequence API. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠ΅ΡΠ½Π΅ Python-Π±ΡΡΠ΅Ρ, ΡΠ°ΠΌΠΎ ΠΏΡΡΠ²ΠΈΡΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² Π±ΡΡΠ΅ΡΠΈΡΠ΅ ΡΠ° Ρ ΠΎΠΌΠΎΠ³Π΅Π½Π½ΠΈ.
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ shutdown (ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΎΡΠ΅ Π² JPype 1.0.0, Π½ΠΎ ΠΏΡΠΎΠΏΡΡΠ½Π°ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° ΡΠΏΠΈΡΡΠΊΠ° ΡΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ). JPype ΡΠ΅Π³Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° shutdown Π½Π° JVM, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈ ΠΈΠ·Ρ ΠΎΠ΄ Π² ΡΠ΅ΠΆΠΈΠΌ 'gracefully'. Π’ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ. ΠΠ΅-ΡΠΎΠ½ΠΎΠ²ΠΈΡΠ΅ Π½ΠΈΡΠΊΠΈ (proxy call) ΡΠ΅Π³Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π·Π°Π΄ΡΡΠΆΠ°Ρ JVM ΠΎΡΠΊΡΠΈΡ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ Π±ΡΠ΄Π°Ρ Π·Π°Π²ΡΡΡΠ΅Π½ΠΈ. ΠΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° Proxy ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ shutdown, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅ Π·Π°Π²ΡΡΡΠ΅Π½ΠΎ, Π½ΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅. Π€Π°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅Π³Π° ΡΠ΅ Π·Π°ΡΠ²Π°ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΈΡΠ²Π°Ρ Π½Π° Π΄ΠΈΡΠΊΠ° (flush), Π°ΠΊΠΎ Π½ΠΈΡΠΊΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΡ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ Π½Π°ΡΠΈΠ½. ΠΠ·Π²ΡΡΡΠ²Π°Ρ ΡΠ΅ Ρ ΡΠΊΠΎΠ²Π΅ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ. ΠΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΈΡΠΊΠΈ ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ Ρ ΡΠΊΠΎΠ²Π΅ AtExit. Π§ΡΠ΅Π· Π΄Π΅ΠΌΠΎΠ½ΡΡ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΈΡΠΊΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° JVM ΠΎΡ Python. ΠΠΎΠ΄ΡΡ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΈΡΠΊΠ°ΡΠ°, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° shutdown. ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π°.
- ΠΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π·Π° Throwable ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π·Π° Object Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄Π΅ΡΠ΅ Π΄ΠΎ ΡΡΡΠ°Π½Π½ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡ Python-ΠΊΠ»Π°ΡΠΎΠ²Π΅.
- ΠΠΎΠΏΡΠ°Π²Π΅Π½ΠΈ ΡΠ° ΠΏΠ΅ΡΠ°ΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅, Π²ΠΎΠ΄Π΅ΡΠΈ Π΄ΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠ° βΒ»jnameΒ» not foundβ.
- ΠΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° β^Cβ Π² KeyboardInterrupt.
- ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ Ρ Python 3.5.3 Π΅ ΠΎΡΡΡΡΠ°Π½Π΅Π½. PySlice_Unpack Π±Π΅ΡΠ΅ Π²ΡΠ²Π΅Π΄Π΅Π½ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΠ°ΡΡ-ΡΠ΅Π»ΠΈΠ· (3.5.4) ΠΈ Π½Π΅ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°.
- Π Π°Π·ΡΠ΅ΡΠ΅Π½Π° Π΅ Π³ΡΠ΅ΡΠΊΠ° Ρ numpy.linalg.inv, ΠΊΠΎΡΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΡΠΈΠ². ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π±Π΅ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄Π΅Π½ Π΄ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° Π½ΠΈΡΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ JVM ΠΈ Π½ΡΠΊΠΎΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° numpy. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° numpy.linalg.inv ΠΏΡΠ΅Π΄ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° JVM.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
