Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Pyston, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π²ΠΈΡΠΎΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Python, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ° ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡ Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ Pyston-lite Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π·Π° CPython. ΠΠΎΠΊΠ°ΡΠΎ Pyston Π΅ ΠΊΠ»ΠΎΠ½ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° CPython ΠΈ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ, Pyston-lite Π΅ ΠΎΡΠΎΡΠΌΠ΅Π½ ΠΊΠ°ΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python (CPython).
Pyston-lite ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π° Pyston Π±Π΅Π· Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠΌΡΠ½Π° Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΡΠ΅Π· ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ PIP ΠΈΠ»ΠΈ Conda. Pyston-lite Π²Π΅ΡΠ΅ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈΡΠ΅ Π½Π° PyPI ΠΈ Conda, ΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«pip install pyston_lite_autoloadΒ» ΠΈΠ»ΠΈ Β«conda install pyston_lite_autoload -c pystonΒ». ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΡΠ° Π΄Π²Π° ΠΏΠ°ΠΊΠ΅ΡΠ°: pyston_lite (Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½ΠΎ JIT) ΠΈ pyston_lite_autoload (ΠΈΠ·Π²ΡΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΌΡΠ½Π° Π½Π° JIT ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Python). ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° JIT ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° autoload, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΡΡΠ° pyston_lite.enable().
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Pyston-lite Π½Π΅ ΠΎΠ±Ρ Π²Π°ΡΠ° Π²ΡΠΈΡΠΊΠΈ Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π² Pyston, ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Ρ ΠΎΠΊΠΎΠ»ΠΎ 10-25% Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Python 3.8. Π Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅, ΠΏΡΠΈΡΡΡΡΠ²Π°ΡΠΈ Π² Pyston, Π² Pyston-lite, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° CPython (ΠΏΡΡΠ²ΠΈΡΡ ΡΠ΅Π»ΠΈΠΉΠ· ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°ΠΌΠΎ Python 3.8). ΠΡ ΠΏΠΎ-Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΡΠ΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ ΡΠ΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΡΠ²ΠΌΠ΅ΡΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ Π΅ΠΊΠΈΠΏΠ° Π½Π° CPython Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π½ΠΎΠ²ΠΈ API Π·Π° JIT, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ ΠΏΠΎ-ΠΏΡΠ»Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ» Π²ΡΡΡ Ρ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Python. ΠΠ±ΡΡΠΆΠ΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠ»ΠΎΠ½Π° Π½Π° Python 3.12. Π ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΎΠ±ΠΌΠΈΡΠ»Ρ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΡΡΠ»Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΎΡ Pyston Π² ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π±ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠΎΡΠΊ Π½Π° CPython.
ΠΡΠ²Π΅Π½ Pyston-lite, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ Pyston 2.3.4, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. Π ΡΠ΅ΡΡΠ° pyperformance Π²Π΅ΡΡΠΈΡ 2.3.4 Π΅ Ρ ΠΎΠΊΠΎΠ»ΠΎ 6% ΠΏΠΎ-Π±ΡΡΠ·Π° ΠΎΡ 2.3.3. ΠΠ±ΡΠΈΡΡ ΡΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ CPython ΡΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π° Π½Π° 66%.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΠΈΠΊΡΠ»Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° CPython 3.11 Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΠΈΡΠΎ Π² Π½ΡΠΊΠΎΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Ρ 25%. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² CPython 3.11 Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π±Π°ΠΉΡΠΊΠΎΠ΄Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΠΊΠΎΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ Ρ 10-15%. ΠΠ½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ ΡΡΠΊΠΎΡΠ΅Π½ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π±ΡΡΠ·ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π Π°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ Cinder ΠΈ HotPy, ΡΡΡΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° nogil ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π²ΡΡΡ
Ρ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° CPython Π±Π΅Π· Π³Π»ΠΎΠ±Π°Π»Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° (GIL, Global Interpreter Lock), ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅ΡΠΈ Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΠΎ Π΄ΠΎΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, Π·Π°ΡΡΡΠ΄Π½ΡΠ²Π°ΠΉΠΊΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄ΡΠ΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠ°ΡΠΎ Π΄ΡΡΠ³ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ GIL ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ GIL ΠΊΡΠΌ Π²ΡΠ΅ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° (Π² Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Ρ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, Π½ΠΎ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡ
Π½ΠΎΡΠΎ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ Π½Π°ΡΡΠΊΠ²Π° Π½Π° GIL).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
