π PyPy: ΡΡΠΊΠΎΡΡΠ΅ΠΌ Python Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ
ΠΠ°ΡΡΡΠΏΠ°Π΅Ρ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python ΡΠΏΠΈΡΠ°Π΅ΡΡΡ Π² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π§ΡΠΎΠ±Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PyPy.
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΡΡ Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π°Π²ΡΠΎΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ Jahongir Rahmonov.
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² 100 ΡΠ°Π· ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ·ΡΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠΎΡΠΎΡΡΡ Python ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ·ΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
PyPy β ΡΡΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python ΠΈ Π΄ΠΎΡΡΠΎΠΉΠ½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° CPython 2.7, 3.6, Π° Π²ΡΠΊΠΎΡΠ΅ ΠΈ 3.7. ΠΠ°ΠΏΡΡΡΠΈΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ.
Python ΠΈ PyPy
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΡΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ CPython (Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° C), Jython (Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Java), IronPython (Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π΄Π»Ρ .NET) ΠΈ PyPy (Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Python).
CPython β ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ, CPython ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ PyPy. ΠΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Python ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠ°ΡΠ° ΠΠ‘ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ PyPy. ΠΠ° macOS, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ½ ΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Homebrew:
ΠΡΠ»ΠΈ Π½Π΅Ρ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΊΠ°ΡΠ°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΠΏΠ°ΠΊΡΠΉΡΠ΅ Π°ΡΡ ΠΈΠ² ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PyPy Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅:
ΠΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½ΡΠΆΠ½ΠΎ Π²Π½ΡΡΡΠΈ ΠΏΠ°ΠΏΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ». ΠΠΎΠ»Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅.
PyPy Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ
Π§ΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ PyPy Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Python Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ script.py ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Π‘ΠΊΡΠΈΠΏΡ ΠΈΠ· Π΄Π²ΡΡ
Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΡΠΈΠΊΠ»ΠΎΠ² for
Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠΈΡΠ»Π° ΠΎΡ 1 Π΄ΠΎ
9999 ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- Π‘ΡΡΠΎΠΊΠ° 3 ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ start_time;
- Π‘ΡΡΠΎΠΊΠΈ Ρ 5 ΠΏΠΎ 8 Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΈΠΊΠ»Ρ;
- Π‘ΡΡΠΎΠΊΠ° 10 Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ;
- Π‘ΡΡΠΎΠΊΠ° 12 ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ Π² end_time;
- Π‘ΡΡΠΎΠΊΠ° 13 Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ start_time ΠΈ end_time, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python. ΠΠΎΡ ΡΡΠΎ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ Π½Π° MacBook Pro 2015 Π³ΠΎΠ΄Π°:
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PyPy:
ΠΡΠΎΡ ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ PyPy ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 94 ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅ Python. ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° PyPy Speed Center, Π³Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½ΠΎΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ PyPy Π½Π°ΠΏΡΡΠΌΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄.
PyPy ΠΈ Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ ΡΠ°ΠΊ, ΡΡΠΎ PyPy ΡΠ²ΡΠ·Π°Π½ Ρ Π΄Π²ΡΠΌΡ ΡΡΡΠ½ΠΎΡΡΡΠΌΠΈ:
- Π―Π·ΡΠΊΠΎΠ²ΡΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ RPython Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ²;
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Python Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°.
ΠΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ PyPy ΠΈΠ·Π²Π΅ΡΡΠ΅Π½, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Python (Π° Π½Π΅ Π½Π° RPython) ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: RPython ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΡΠΎ ΠΈ Python. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ PyPy:
- ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° RPython;
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ RPython (translation toolchain) ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΊΠΎΠ΄Ρ, Π΄Π΅Π»Π°Ρ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ. ΠΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡ ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ΄ Mac, Windows ΠΈ Linux Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ;
- Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» β ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΠ°Π³ΠΈ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PyPy, Ρ. ΠΊ. ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ PyPy ΠΎΡΠΎΡΠ»ΠΈ ΠΎΡ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½ Π°ΡΡΠΎΡΠΈΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Python.
ΠΠ°Π»Π΅Π΅ ΠΌΡ ΠΈΠ·ΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, Π΄Π΅Π»Π°ΡΡΠΈΠ΅ PyPy ΡΠ°ΠΊΠΈΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ.
Just-In-Time (JIT) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ
ΠΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠ΅ Π―Π Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Ρ, Π½ΠΎ ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΠΠ‘. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ Π―Π Π»ΡΡΡΠ΅ ΠΏΠΎΡΡΠΈΡΡΡΡΡΡ, Π½ΠΎ ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΡΠΆΠ΅.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ·ΡΠΊΠΈ, Π²ΡΠΎΠ΄Π΅ Python, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΠ΅ΡΠ°ΡΡ Π² ΡΠ΅Π±Π΅ ΠΎΠ±Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°: ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄, Π° ΠΏΠΎΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ CPython. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π΅Π΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄Π°Π»Π΅ΠΊΠ° ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π΄Π»Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ. ΠΠ΄Π΅ΡΡ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠΈΠΉ Π»ΡΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ ΠΎΠ±ΠΎΠΈΡ ΠΌΠΈΡΠΎΠ². Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π³ΠΈ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ:
- ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π°, Π²ΡΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΈΠΊΠ»Π΅;
- ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΡ
ΡΠ°ΡΡΠ΅ΠΉ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ;
- ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°;
- Π·Π°ΠΌΠ΅Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ Π΄Π²Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π° ΠΈΠ· Π½Π°ΡΠ°Π»Π° ΡΡΠ°ΡΡΠΈ, PyPy ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π» Π΅Π΅ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π» ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΠ» ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π‘Π±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°
ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π»ΡΠ±ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠ΄ Π½ΠΈΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΡΠ»ΠΈ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ ΡΠΈΡΡΠΈΡΡ, ΠΏΠ°ΠΌΡΡΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π C ΠΈ C++ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅ΡΠ°ΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΠΎΠ΄Π΅ Python ΠΈ Java, Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΠΎΡΠ΅ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΌΡΡΠΎΡΠ° β ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π CPython ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π° Π½Π΅Π³ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠΎΠ³Π΄Π° ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ, CPython Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½ΠΎ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π½ΡΠ°Π½Ρ. ΠΠΎΠ³Π΄Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ»ΠΎΠΊ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π½ΡΠΌ Π½ΡΠ»Ρ, Π²ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π΄Π»ΠΈΠ½Π½Π°Ρ ΠΏΠ°ΡΠ·Π°, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°Π΅Ρ. ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ΅Π±Ρ, Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ.
Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΆΠ΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ Π½Π΅ ΡΠ΄Π°Π»ΡΠ΅Ρ Π΅Π³ΠΎ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ΅Π±Ρ, ΠΈ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π΅ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΈΠΊΠ»ΠΎΠΌ ΡΡΡΠ»ΠΎΠΊ, ΠΈ ΠΎΠ½Π° Π½Π΅ ΡΠ΅ΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ°.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ CPython ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ β ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°. ΠΠ½ ΠΏΡΠΎΠ±Π΅Π³Π°Π΅Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π°ΠΊΡΠΈΠ²Π½Ρ. ΠΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΈΠΊΠ»ΠΎΠΌ ΡΡΡΠ»ΠΎΠΊ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ·Ρ, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΠ°ΠΌΡΡΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
PyPy ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄. ΠΠ½ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Ρ ΠΎΠ΄ΠΈΡ ΠΏΠΎ Β«ΠΆΠΈΠ²ΡΠΌΒ» ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΡΠ½Ρ. ΠΡΠΎ Π΄Π°Π΅Ρ Π΅ΠΌΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄ CPython, Π΄Π΅Π»Π°Ρ ΠΌΠ΅Π½ΡΡΠ΅ Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ Π²ΡΠ΅ΠΌΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, PyPy ΡΠ°Π·Π±ΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Π½Π° ΡΠ°ΡΡΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, Π° Π½Π΅ ΡΠΎΡΠ½ΠΈ, ΠΊΠ°ΠΊ Π² CPython.
Π‘Π±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅ΡΠ°Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡ ΠΎΠ΄ΡΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ PyPy
PyPy Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ CPython. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡ .
ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ C-Extensions
ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π‘-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΡΠ΅ΠΌ Π² CPython, Ρ. ΠΊ. ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, ΠΈ PyPy Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. Π’Π°ΠΊΠΆΠ΅ PyPy Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ.
Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Python, ΡΡΠΎΠ±Ρ JIT ΠΌΠΎΠ³ Π΅Π³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΡΠ΄ΡΡΡΡ Π½Π°Π΄ C-Extensions: Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΠΆΠ΅ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° PyPy ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π±ΡΡΡΡΠΎ.
Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ Long-Running ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PyPy, ΠΎΠ½ ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π» Π±ΡΡΡΡΠ΅Π΅. ΠΡΠ»ΠΈ ΡΠΊΡΠΈΠΏΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π», ΠΈΠ·-Π·Π° Π½Π°ΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ² ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ Π² CPython. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ΄ Π±ΠΎΠ»ΡΡΠΎΠΉ, ΡΡΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π§ΡΠΎΠ±Ρ Π² ΡΡΠΎΠΌ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ Π² CPython ΠΈ PyPy:
ΠΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ PyPy, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π² CPython ΡΡΠ°ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. ΠΠ° MacBook Pro ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ CPython Π·Π°ΠΉΠΌΠ΅Ρ 0.0004873276 ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π° Π² ΡΠ»ΡΡΠ°Π΅ Ρ PyPy β 0.0019447803 ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΠ½ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π·Π°ΡΠ°Π½Π΅Π΅
PyPy Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Python. ΠΠ·-Π·Π° ΠΏΡΠΈΡΡΡΠ΅Π³ΠΎ Python Π΄ΠΈΠ½Π°ΠΌΠΈΠ·ΠΌΠ°, ΠΊΠΎΠ΄ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
PyPy β ΡΡΠΎ ΡΠ°Π½ΡΠ°ΠΉΠΌ-ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ, Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
PyPy β ΡΡΠΎ Π±ΡΡΡΡΠ°Ρ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° CPython. ΠΠ°ΠΏΡΡΡΠΈΠ² ΡΠ²ΠΎΠΉ ΡΠΊΡΠΈΠΏΡ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ, Π½Π΅ Π²Π½ΠΎΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ:
- Π’ΠΠ-10 ΠΊΠ½ΠΈΠ³ ΠΏΠΎ Python: ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, Π΅ΠΌΠΊΠΎ, Π΄ΠΎΡ ΠΎΠ΄ΡΠΈΠ²ΠΎ
- Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Python
- 29 Python-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΎΠΊΠ°Π·Π°Π²ΡΠΈΡ
ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ
- 15 Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ Python: ΠΊΠ°ΠΊ Π΄ΠΆΡΠ½ΠΈΠΎΡΡ ΠΏΡΠΎΠΉΡΠΈ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΠ°Π±ΡΠ΄ΡΡΠ΅ ΠΎ matplotlib: Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² Python Π²ΠΌΠ΅ΡΡΠ΅ Ρ plotly