ΡΡΠΊΠΎΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° python
ΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° Python Π² ΡΡΡΡΡΡ ΡΠ°Π·
ΠΠ±ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ Python ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ
Π Π»ΡΠ±ΡΡ ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°Π½ΠΈΡΡ ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Python ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠ°. ΠΡΠΎ-ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ ΡΡΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ. ΠΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅. ΠΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Java ΡΠΎΠΆΠ΅ ΡΠ·ΡΠΊ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π΅Ρ Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ JVM. ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Π² ΡΡΠΎΠΌ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠ΅, Java Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Python.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΡΡΡ Python. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΈΠΊΠ» for Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½:
3,37 Ρ Β± 582 ΠΌΡ Π½Π° ΡΠΈΠΊΠ» (ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ 7 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ² ΠΏΠΎ 1 ΡΠΈΠΊΠ»Ρ)
ΠΠΈΡΠ΅Π³ΠΎ ΡΠ΅Π±Π΅, Π½Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ 1 000 000 ΠΎΠ±ΡΠ°ΡΠ½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ 3,37 Ρ. Π’Π° ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° C Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π·Π° ΡΡΠΈΡΠ°Π½Π½ΡΠ΅ ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΡ: 9 ΠΌΡ; C# ΡΡΠ΅Π±ΡΠ΅ΡΡΡ 19 ΠΌΡ; Nodejs ΡΡΠ΅Π±ΡΠ΅ΡΡΡ 26 ΠΌΡ; Java ΡΡΠ΅Π±ΡΠ΅ΡΡΡ 5 ΠΌΡ(!), Π° Python ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°ΠΆ ΡΠ΅Π»ΡΡ 3,37 Π‘ΠΠΠ£ΠΠΠ«. (ΠΠ΅ΡΡ ΠΊΠΎΠ΄ ΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½ Π² ΠΊΠΎΠ½ΡΠ΅).
ΠΠ΅ΡΠ²ΠΎΠΏΡΠΈΡΠΈΠ½Π° ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠ±ΡΡΠ½ΠΎ ΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ Python ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° Python Π²ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ; ΠΈΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π½Π° Python ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅, Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ ΠΎΠ±ΡΡΡΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ½ΡΡΡΠΈ ΡΠΈΠΊΠ»Π° for ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΈΠΏ ΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ. ΠΡΠ΅ ΡΡΠΈ 3 ΡΠ΅ΠΊΡΠ½Π΄Ρ ΡΡΠ°ΡΡΡΡΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠΏΠΎΠ².
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ C, Π³Π΄Π΅ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, Π² Python ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΊΡΠΎΠ² Π¦Π ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠ°.
ΠΠ°ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΡΡΠΎ Π΄ΠΎΠ»Π³ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ.
Π¨Π°Π³ 1. ΠΠ°Π΄Π°ΡΠΌ a->PyObject_HEAD->typecode ΡΠΈΠΏ integer
Π¨Π°Π³ 2. ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ a->val =1
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Python ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ, ΡΡΠΎΠΈΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² ΡΡΠ΄Π΅ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΠΆΠ΅ΠΉΠΊΠ°: Why Python is Slow: Looking Under the Hood
ΠΡΠ°ΠΊ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ±, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠΏΠΎΠ², Π° Π·Π½Π°ΡΠΈΡ, ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ?
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ NumPy
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ list ΡΠ·ΡΠΊΠ° Python, ΠΌΠ°ΡΡΠΈΠ² NumPy β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠ°ΡΡΠΈΠ²Π° C. ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² NumPy Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ°Π³ΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ². ΠΡΠΎ Π΄Π°ΡΡ Π½Π°ΠΌ Π½Π°ΠΌΡΠΊ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Universal Functions (ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ) NumPy, ΠΈΠ»ΠΈ UFunc.
ΠΡΠ»ΠΈ Π²ΠΊΡΠ°ΡΡΠ΅, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ UFunc ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΡΠ΅Π»ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ. ΠΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Python Π² Π²Π΅ΡΡΠΈΡ Π½Π° UFunc, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ, Π½ΠΎ ΠΈ ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ΄. ΠΡΠ³Π°Π΄Π°Π΅ΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅? 2,7 ΠΌΡ β Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅ ΡΠ·ΡΠΊΠΈ:
2,71 ΠΌΡ Β± 50,8 ΠΌΠΊΡ Π½Π° ΡΠΈΠΊΠ» (ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ =7 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ² ΠΏΠΎ 100 ΡΠΈΠΊΠ»ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΡΠΉ)
ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Ufunc.
ΠΠΎΠ΄Π²ΠΎΠ΄ΠΈΠΌ ΠΈΡΠΎΠ³
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ Python, ΡΠΎ Π²ΡΡΠΎΠΊΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ. ΠΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π² NumPy ΠΈΠ»ΠΈ DataFrame Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Pandas, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ DataFrame ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ NumPy. Π’ΠΎ Π΅ΡΡΡ Ρ Π½ΠΈΠΌ ΡΠΎΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ufunc.
UFunc ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π² Python ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±ΡΡΡΡΠ΅Π΅ Π½Π° ΠΏΠΎΡΡΠ΄ΠΊΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½. Π‘Π°ΠΌΡΠΉ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ Python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π°ΠΆΠ΅ Π±ΡΡΡΡΠ΅Π΅ ΡΠ·ΡΠΊΠ° C. Π ΡΡΠΎ Π·Π΄ΠΎΡΠΎΠ²ΠΎ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΠΊΠΎΠ΄ ΡΠ΅ΡΡΠΎΠ² Π½Π° C, C#, Java ΠΈ NodeJS
ΠΠ° ΠΏΡΠ°Π²Π°Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
ΠΠΎΠΏΠ»ΠΎΡΠ°ΠΉΡΠ΅ Π»ΡΠ±ΡΠ΅ ΠΈΠ΄Π΅ΠΈ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΠΈΡ VDS Ρ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠ΅ΠΉ Π½Π° Linux ΠΈΠ»ΠΈ Windows. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΡΡΡ!
ΠΡΠΈΡΠΌΡ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Python
ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Python ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ΅ΠΌΠΎΠ². ΠΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΡΡ ΠΏΡΠΎΡΡΡΡ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΈΠ· Π½ΠΈΡ .
Python β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΌΠΈΡΠ΅. ΠΡΠΈΠΌ ΠΎΠ½ ΠΎΠ±ΡΠ·Π°Π½ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΏΡΠΎΡΡΠΎΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ ΠΈ Π±ΠΎΠ³Π°ΡΠΎΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π³Π΄Π΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π²Π°ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ΅ΠΌΠΎΠ² ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
Π Python Π²ΡΡΡΠΎΠ΅Π½Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ( list ), ΠΊΠΎΡΡΠ΅ΠΆ ( tuple ), ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ( set ) ΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ ( dictionary ). ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π»ΡΠ΄Π΅ΠΉ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠΌΠ½ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎ ΡΠΏΠΈΡΠΊΠΈ. ΠΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π²Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΡΠ±ΠΎΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΌ, Π²Π΅Π΄Ρ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΊΡΠ΄Π° ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΠΈΠΊΠ»ΠΎΠ² for
ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ (list comprehension)
ΠΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π½ΠΈ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΠΊΠ΅, Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΡ ΠΊΠΎΠ΄ Π·Π°Π½ΠΎΡΠΈΡ Π² ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅ ΡΠΈΡΠ»Π° ΠΌΠ΅ΠΆΠ΄Ρ 1 ΠΈ 1000, ΠΊΡΠ°ΡΠ½ΡΠ΅ 3:
Π‘ΠΎ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΠΌΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ:
ΠΠ΅ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π°ΠΉΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ
ΠΠ΅ ΡΡΠΎΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΊ:
ΠΡΡΡΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°:
ΠΠ°ΡΠΊ ΠΡΡΡ Β«ΠΠ·ΡΡΠ°Π΅ΠΌ PythonΒ»
Π‘ΠΊΠ°ΡΠΈΠ²Π°ΠΉΡΠ΅ ΠΊΠ½ΠΈΠ³Ρ Ρ Π½Π°Ρ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ
ΠΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
ΠΠ°, Π² Python Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ global Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π½ΠΈΠΌΠΈ ΡΡΠ΅Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ. ΠΠΎΡΠΎΠΌΡ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±Π΅Π· ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ΅ ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡΡΠ½ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ, ΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²Π°ΠΌ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ Π΄ΠΎΡΡΠΈΡΡ Π»ΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
Π‘ΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ join
ΠΡΡ Π΄Π΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ + ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π² Π½Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅. join() ΡΡΡΡΠΎΠ΅Π½ ΠΈΠ½Π°ΡΠ΅ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΡΠΈΠ³ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ
ΠΡΠ΄ΡΡΠ΅ Π±Π΄ΠΈΡΠ΅Π»ΡΠ½Ρ
ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΠΎΡΠ΅ΠΊ
Π‘ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠΌΠΈ. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ 1 Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΈΠΊΠ»Π°Ρ
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ
ΠΠ΅ Π±ΠΎΠΉΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°.
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠ΄:
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠΈΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΊΠΎΡΠΈΡΠ΅Π»ΠΈ
ΠΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Python ΠΏΠΎΡΠ»ΡΠΆΠΈΠ»Π° Π²Π΄ΠΎΡ Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠΎΠΊΡΠ°ΡΠ°ΡΡΠΈΡ Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ. ΠΠ° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Ρ Π²ΡΡΡΠ΅ΡΠΈΡΠ΅ΡΡ Ρ pypy (ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π½Π° Python).
ΠΡΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Python-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
C/C++ Π±ΡΡΡΡΠ΅Π΅ Python. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π° Python, ΠΏΠΈΡΡΡΡΡ Π½Π° C/C++. Π‘ΡΠ΅Π΄ΠΈ ΡΠ°ΠΊΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ β Numpy, Scipy ΠΈ Pandas, ΡΡΠΎΠ»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄Π°Π½Π½ΡΡ .
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Python
Python ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΡΠ΅ΡΡΡ ΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΡ Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π΅Π΅. ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π²ΡΠ΅Π³Π΄Π° ΠΏΠΈΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° Π½ΠΎΠ²Π΅ΠΉΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΏΡΠΈΡΠΌΡ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Python. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠΈΠΉ: Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΈΡΠ΅ ΠΈΡ ΠΈ ΠΏΠΈΡΠΈΡΠ΅ ΠΊΠΎΠ΄ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ!
Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° Python ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°
ΠΠ°ΠΊΠΈΠΌ Π±Ρ Ρ
ΠΎΡΠΎΡΠΈΠΌ Π½Π΅ Π±ΡΠ» Python, Π΅ΡΡΡ Ρ Π½Π΅Π³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ Π²ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ β ΡΠΊΠΎΡΠΎΡΡΡ. ΠΠ° ΡΡΡ ΡΠ΅ΠΌΡ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠ΅ΠΉ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π½Π° Π₯Π°Π±ΡΠ΅.
Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ?
Π’ΠΎΠ³Π΄Π°, Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ? ΠΠ΅Π½ΡΡΡ Python Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ? ΠΠ΅Ρ, ΡΠ΄Π°Π²Π°ΡΡΡΡ Π½Π΅Π»ΡΠ·Ρ. ΠΡΠ΄Π΅ΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΌ ΠΊΠΎΠ΄. ΠΡΠΈΠΌΠ΅ΡΡ Π±ΡΠ΄ΡΡ Π²Π·ΡΡΡ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΡΠΎΡΡΠ΅ΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΠ°Π½Π΄Π΅Π»ΡΠ±ΡΠΎΡΠ° Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ
600*600 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, 100 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΠ»ΠΎ 3.07 ΡΠ΅ΠΊ, ΡΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΌΡ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ Π·Π° 100%
Π‘ΠΊΠ°ΠΆΡ Π·Π°ΡΠ°Π½Π΅Π΅, ΡΠ°ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΡΡΠ°Π½Π΅Ρ ΠΌΠ΅Π½Π΅Π΅ pythonic, Π΄Π° ΠΏΡΠΎΡΡΡΡ ΠΌΠ΅Π½Ρ Π°Π΄Π΅ΠΏΡΡ python-way.
Π¨Π°Π³ 0. ΠΡΠ½ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΠ°Π½Π½ΡΠΉ ΡΠ°Π³ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ python Π»ΡΡΡΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎ Π·Π°ΠΏΡΡΠΊΠ΅, Π΄Π° ΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ psyco Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π³ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΡΡ, Ρ.ΠΊ. psyco ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅ ΡΠ°ΡΡΡΠ΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° ΡΠ°ΠΊ:
ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΡ 2.4 ΡΠ΅ΠΊ, Ρ.Π΅. 78% ΠΎΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ.
Π¨Π°Π³ 1. ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python’a, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΊΠ»ΠΎΠ½Π΄Π°ΠΉΠΊ ΠΏΠΎΠ»Π΅Π·Π½Π΅ΠΉΡΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. Π‘Π΅ΠΉΡΠ°Ρ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ cProfile, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΌΡ, ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΠΈ, Π΄Π°ΠΆΠ΅, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ Π·Π°Π½ΡΡΠΈΠ΅ΠΌ.
ΠΠΎΠ»Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ, Π½Π°ΠΌ ΠΆΠ΅ Ρ
Π²Π°ΡΠΈΡ ΠΏΠ°ΡΡ ΠΏΡΠΎΡΡΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄.
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 2.309 2.309 2.766 2.766 mand_slow.py:22(mandelbrot)
.
Π‘ Π΅Ρ ΠΏΠΎΠΌΠΎΡΡΡ, Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΡΠ°, ΡΡΠ΅Π±ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (ΡΡΡΠΎΠΊΠΈ Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ncalls (ΠΊΠΎΠ»-Π²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ), tottime ΠΈ percall (Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π²ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ)).
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ Π²ΡΠ²ΠΎΠ΄Π° Π±ΡΠ»ΠΎ (Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅, Ρ.ΠΊ. ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΉ Β«ΠΎΠ²Π΅ΡΡ
Π΅Π΄Β»):
4613944 function calls (4613943 primitive calls) in 2.818 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 2.309 2.309 2.766 2.766 mand_slow.py:22(mandelbrot)
3533224 0.296 0.000 0.296 0.000
360000 0.081 0.000 0.081 0.000
360000 0.044 0.000 0.044 0.000
360000 0.036 0.000 0.036 0.000
.
ΠΡΠ°ΠΊ, ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½, ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΉΠΌΠ΅ΠΌΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΠΏΠ»ΠΎΡΠ½ΡΡ.
Π¨Π°Π³ 2. ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΡΠΈΠ»Ρ
ΠΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠΎΠΈΡ Π½Π°ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ mandelbrot, Π·Π° Π½Π΅ΠΉ ΠΈΠ΄Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ abs, Π·Π° Π½Π΅ΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ math, Π΄Π°Π»Π΅Π΅ β ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ, Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π·Π°ΡΡΠ°ΡΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ Π½Π°ΠΌ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ.
ΠΡΠ°ΠΊ, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Β«Π²ΡΠ»ΠΈΠ·Π°Π½ΡΠ΅Β» ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ, Π½Π°ΠΌ Π²ΡΡΠ΄Π»ΠΈ ΡΠ΄Π°ΡΡΡΡ ΡΠ»ΡΡΡΠΈΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ:
Π¨Π°Π³ 3. ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°
Π‘Π΅ΠΉΡΠ°Ρ, ΠΊΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ ** β Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Β«ΠΎΠ±ΡΠΈΠΉΒ», Π½Π°ΠΌ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΡΡ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠΎΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ, Ρ.Π΅. Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΠΈΠ΄Π° x**2 ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° Ρ
*Ρ
, Π²ΡΠΈΠ³ΡΠ°Π² ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΅ΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π²ΡΠ΅ΠΌΡ:
1.9 ΡΠ΅ΠΊ, ΠΈΠ»ΠΈ 62% ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Π΄Π²ΡΡ
ΡΡΡΠΎΠΊ:
Π¨Π°ΠΆΠΊΠΈ 5, 6 ΠΈ 7. ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅, Π½ΠΎ Π²Π°ΠΆΠ½ΡΠ΅
ΠΡΠΎΠΏΠΈΡΠ½Π°Ρ ΠΈΡΡΠΈΠ½Π°, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π½Π°ΡΡ Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π° Python β ΡΠ°Π±ΠΎΡΠ° Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ. ΠΠΎ ΡΠ°ΡΡΠΎ Π·Π°Π±ΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΡΡΠΎ Π²Π΅ΡΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½ΠΎ ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π ΠΊΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ΄ΡΡ Π²ΡΠ·ΠΎΠ²Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ math. Π’Π°ΠΊ ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΡΠ°ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ? Π‘Π΄Π΅Π»Π°Π½ΠΎ:
ΠΡΠ΅ 0.1ΡΠ΅ΠΊ ΠΎΡΠ²ΠΎΠ΅Π²Π°Π½ΠΎ.
ΠΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ abs(x) Π²Π΅ΡΠ½Π΅Ρ ΡΠΈΡΠ»ΠΎ ΡΠΈΠΏΠ° float. Π’Π°ΠΊ ΡΡΠΎ ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΡΠΎΠΈΡ Ρ float Π° Π½Π΅ int:
ΠΡΠ΅ 0.15ΡΠ΅ΠΊ. 53% ΠΎΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π³ΡΡΠ·Π½ΡΠΉ Ρ
Π°ΠΊ.
Π ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ Π½ΠΈΠΆΠ½ΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π²Π½Π° Π²Π΅ΡΡ
Π½Π΅ΠΉ, Ρ.ΠΎ. ΡΠΈΡΠ»ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π²Π΄Π²ΠΎΠ΅, ΠΏΠΎΠ»ΡΡΠΈΠ² Π² ΠΈΡΠΎΠ³Π΅ 0.84ΡΠ΅ΠΊ ΠΈΠ»ΠΈ 27% ΠΎΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΎΡΠΈΠ»ΠΈΡΡΠΉΡΠ΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ timeit. ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅. Python β ΠΌΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π½Π΅ΠΌ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ, ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π°ΡΠ΅ΠΌΡ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΠΈ Π²ΡΠ΅ ΠΎΡΠΏΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ:)
Π¦Π΅Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ, ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π·Π° ΡΡΠ΅Ρ ΠΌΠ΅Π»ΠΊΠΈΡ
ΠΈ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½ ** Π½Π° *, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»Π·Π°ΡΡ Π΄ΠΎ Π΄Π²ΡΡ
ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, Π±Π΅Π· ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΆΠ΅Π»ΠΎΠΉ Π°ΡΡΠΈΠ»Π»Π΅ΡΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ Π‘ΠΈ, ΠΈΠ»ΠΈ ΡΠ°ΠΌΠ°Π½ΡΡΠ² psyco.
Π’Π°ΠΊΠΆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ psyco, Ρ
ΡΠΆΠ΅ Π½Π΅ ΡΡΠ°Π½Π΅Ρ:)
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ ΠΊΡΠΎ Π΄ΠΎΡΠΈΡΠ°Π» Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°, Π±ΡΠ΄Ρ ΡΠ°Π΄ Π²ΡΡΠ»ΡΡΠ°ΡΡ Π²Π°ΡΠΈ ΠΌΠ½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ !
UPD ΠΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΡΠ»ΠΊΡ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΏΡΠΈΠ²Π΅Π» funca.
10 ΠΏΡΠ°ΠΊΡΠΈΠΊ ΠΊΠΎΠ΄Π°, ΡΡΠΊΠΎΡΡΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° Python 🐍
Β«ΠΠΈΡΠΎΠ½ β ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉΒ». ΠΠ°Π²Π΅ΡΠ½ΡΠΊΠ° Π²Ρ Π½Π΅ ΡΠ°Π· ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΎΡ Π»ΡΠ΄Π΅ΠΉ, ΠΏΡΠΈΡΠ΅Π΄ΡΠΈΡ Π² Python ΠΈΠ· C, C++ ΠΈΠ»ΠΈ Java. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎ Π²Π΅ΡΠ½ΠΎ. Π¦ΠΈΠΊΠ»Ρ ΠΈΠ»ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π³Π»Π°Π²Π½Π°Ρ ΠΌΠΈΡΡΠΈΡ Python β ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΡΡΠ½ΡΠΌ ΠΈ Π»Π΅Π³ΠΊΠΈΠΌ. Π Π°Π΄ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΡΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ½Π΅ΡΡΠΈ Π² ΠΆΠ΅ΡΡΠ²Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΠΎ Π½Π΅ΠΌΠ°Π»ΠΎ ΡΡΠΈΠ»ΠΈΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π½Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ NumPy, SciPy, Pandas ΠΈ numba, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° C/C++. ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ β PyPy ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΊΠΎΠ΄ Python Π² 4.4 ΡΠ°Π·Π° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ CPython (ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Python).
ΠΠΎ ΡΡΠΊΠΎΡΠΈΡΡ Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π±Π΅Π· Π²Π½Π΅ΡΠ½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π Π½Π°ΡΠΈΡ ΡΠΈΠ»Π°Ρ ΡΠ°Π·ΠΎΠ³Π½Π°ΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΡΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΊΠΎΠ΄ΠΈΠ½Π³Π°.
1. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π² 36 ( set ) ΠΈ 20 ( sum ) ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ°ΠΌΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ.
2. sort() vs sorted()
Π’Π°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ sort() ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΡΠΌΠΎ Π½Π° ΠΌΠ΅ΡΡΠ΅, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ sorted() ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ Π½Π΅ΡΡΠΎΠ½ΡΡΡΠΌ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²Π½ΡΡΡΠΈ a_long_list ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡ sorted() Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ±ΠΎΠΉ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»ΠΎΠ²Π°ΡΡ (ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ), ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ sorted() :
3. ΠΠΈΡΠ΅ΡΠ°Π»Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ
4. ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²
ΠΠ±ΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΡΠ°ΡΠΎΠ³ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ» for β ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ Π² Π½ΠΎΠ²ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ±Π΅ΡΡΠΌ Π²ΡΠ΅ ΡΡΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° another_long_list :
ΠΠΎ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΠΈ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. ΠΠΎΠ΄ ΡΠΈΠΊΠ»Π° for ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠΉ-Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠ°, Π²ΡΠΈΠ³ΡΠ°Π² ΠΏΡΠΈ ΡΡΠΎΠΌ Π² ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠΎΡΡΠΈ Π² Π΄Π²Π° ΡΠ°Π·Π°:
Π‘ΠΎΡΠ΅ΡΠ°Ρ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Ρ ΠΡΠ°Π²ΠΈΠ»ΠΎΠΌ #3 (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ²), ΠΌΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π² ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΡΠΊΠΎΠ±ΠΊΠΈ:
5. enumerate() Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°
ΠΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ΅ ΡΠΏΠΈΡΠΊΠ° Π½ΡΠΆΠ½Ρ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈ ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ. Π§ΡΠΎΠ±Ρ Π²Π΄Π²ΠΎΠ΅ ΡΡΠΊΠΎΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ enumerate() Π΄Π»Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π² ΠΏΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
6. zip() Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ²
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠΏΠΈΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ zip() ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ.
Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π·Π²Π΅Π·Π΄ΠΎΡΠΊΡ ( * ) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅:
7. ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ set() ΠΈ in
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΡ Π½Π΅ΡΠΊΠ»ΡΠΆΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ in :
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Π½ΡΠ»ΠΎ 20 ΠΌΡ. ΠΠΎ ΡΡΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ Π·Π°ΡΡΠ°ΡΡ. ΠΠ°ΡΠΎ ΡΠ°ΠΌΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°Π½ΡΠ»Π° 5 ΠΌΠΊΡ β ΡΠΎ Π΅ΡΡΡ Π² 2 ΡΡΡ. ΡΠ°Π· ΠΌΠ΅Π½ΡΡΠ΅, ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ ΠΏΡΠΈ ΡΠ°ΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΡ .
8. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° True
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅/ΡΠΏΠΈΡΠΊΠΈ/ΡΠ»ΠΎΠ²Π°ΡΠΈ/. ΠΏΡΡΡΡΠΌΠΈ. ΠΠ° ΡΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°Ρ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ not :
9. ΠΠΎΠ΄ΡΡΠ΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ Counter()
ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΠΏΠΈΡΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ»ΡΡΠΈ β ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ°, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΡΡΠ΅ΡΡΠΈΠΊ Π²ΡΡΡΠ΅ΡΠ°Π΅ΠΌΠΎΡΡΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Counter() ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ collections. ΠΠ΅ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΌΠ΅ΡΡΠΈΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅:
ΠΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 10 ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ.
ΠΠ΄Π½ΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ, collections β ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ Π½Π°Π±ΠΎΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π»ΡΠ±ΠΎΠ³ΠΎ Python-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠ΅ ΠΏΠΎΠ»Π΅Π½ΠΈΡΠ΅ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π½Π°ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ.
10. Π¦ΠΈΠΊΠ» for Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ β ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠΈΠΊΠ» Π²Π½ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π»Ρ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ (Π΄Π»ΠΈΠ½Π° a_long_list ) ΠΌΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 22% Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠ΄Π΅ΠΌ ΡΠ°Π΄Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°ΠΌΠΈ ΠΊ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² Python. ΠΠΎΡ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²Π°Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ:
Python & ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠ°ΠΌΡΡΠΈ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ°ΡΠ°ΡΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ python ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΆΠ΅Π»Π°ΡΡ Π»ΡΡΡΠ΅Π³ΠΎ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ python ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ python ΠΊΠ°ΠΊ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ°ΠΊ ΠΈ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ Π·Π°Π΄Π°ΡΠ°Ρ . Π― ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ win10 x64.
ΠΠΊΠΎΠ½ΠΎΠΌΠΈΠΌ ΠΏΠ°ΠΌΡΡΡ ΡΠΈΠ»Π°ΠΌΠΈ Python
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΡΡΡΡ Ρ Π½Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ²Π°ΡΠΎΠ². ΠΠΎΡ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌΠΈ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ. Π‘Π°ΠΌΡΠΉ Ρ ΠΎΡΠΎΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΠ, Π½ΠΎ Π²Π΄ΡΡΠ³ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΈ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π²ΡΠ΅ ΡΠΎΠ²Π°ΡΡ Π² ΠΏΠ°ΠΌΡΡΡ, Π΄Π°Π±Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΡ . Π ΡΡΡ Π²ΡΡΠ°Π΅Ρ ΡΠ΅Π·ΠΎΠ½Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ, Π° Ρ Π²Π°ΡΠΈΡ Π»ΠΈ Π½Π°ΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠΎΠ²Π°ΡΠΎΠ²?
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π΅ΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° Π½Π°Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½. Π£ Π½Π΅Π³ΠΎ Π±ΡΠ΄Π΅Ρ Π»ΠΈΡΡ 2 ΠΏΠΎΠ»Ρ: name ΠΈ listGoods, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ²Π°ΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠΎΠ»Π΅ listGoods). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΡΠΎΠ²Π°ΡΠ΅ (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ dataclassβΡ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²).
ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π°Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΠΈΡΡΠΎΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Ρ ΡΠΎΠ·Π΄Π°ΠΌ ΠΏΠΎ 200 ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠΎΠ²Π°ΡΠΎΠ² Π² 3Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ :
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π°Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²ΠΊΠ΅ (Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ pympler):
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π½Π°Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²ΠΊΠ΅ Π·Π°Π½ΡΠ» ΠΏΠΎΡΡΠΈ 106ΠΠ±. ΠΠ°, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ΅ΡΡΡ, ΡΡΠΎ Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΠ» Π»ΠΈΡΡ 600 ΡΠΎΠ²Π°ΡΠΎΠ², Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² Π² Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ, ΡΠ΅Π½Π΅ ΠΈ Π²Π°Π»ΡΡΠ΅, Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π°ΡΡΠΈΠΊΡΠ», ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ²Π°ΡΠ° Π½Π° ΡΠΊΠ»Π°Π΄Π΅, ΡΡΡΠ°Π½Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ, ΡΠ²Π΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π²Π΅Ρ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠ΅ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·Π΄ΡΡΡ Π²Π°Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΡΠ΅Π½ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ (ΠΈ ΡΡΠΎ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π΅ΡΠ΅ Π΄Π°ΠΆΠ΅ Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π»ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ).
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Python ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ³Π°Π΄ΡΠ²Π°Π΅ΠΌΡΡ. ΠΠ°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ python ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ __dict__ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Π±Π΅Π· ΠΎΡΠΎΠ±ΡΡ ΡΡΠΈΠ»ΠΈΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΉ. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π² ΠΊΠ»Π°ΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ ΠΈΠ³ΡΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΠ»ΠΈ. ΠΡ ΡΠΆΠ΅ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Ρ Π½Π°Ρ. Π pythonβe Π΅ΡΡΡ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°ΡΡΠΈΠ±ΡΡ __slots__, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ __dict__. ΠΡΠΊΠ°Π· ΠΎΡ __dict__ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΠΌ Π² Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΏΠΎ ΠΈΡΠΎΠ³Ρ ΠΎΠ±ΡΠ΅ΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡΡΡ. ΠΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠΈ ΠΊΠ»Π°ΡΡΡ:
Π ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π½Π°Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, ΠΎΠ±ΡΠ΅ΠΌ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠΌ, ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΡΡ ΠΏΠΎΡΡΠΈ Π² 2.4 ΡΠ°Π·Π° (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π²Π΅ΡΡΠΈΠΈ Python, Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ²). Π£ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΡ ΡΡΡΠΎΡΠ΅ΠΊ ΠΊΠΎΠ΄Π°. ΠΠΎ Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π΅ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ:
ΠΠ° ΡΡΠΎΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ»ΠΎΡΠΎΠ² Π½Π΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ, ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡ ΠΈΠ·Π±Π°Π²ΠΈΠ»ΠΈΡΡ ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠ° __dict__ ΡΠ΅ΠΏΠ΅ΡΡ ptyhon’Ρ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ ΠΈ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. ΠΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ Π½Π°Ρ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ timeit, ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ Π½Π°Ρ ΠΊΠΎΠ΄ Π½Π° ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ __slots__ (Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΌ__dict__):
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΡΠΊΠΎΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 15% (ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ» Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ, Π½ΠΎ ΠΈ ΡΡΠΊΠΎΡΠΈΡΡ Π½Π°Ρ ΠΊΠΎΠ΄.
ΠΡΡΠ°Π΅ΠΌΡΡ ΡΡΠΊΠΎΡΠΈΡΡ ΠΊΠΎΠ΄
Π‘ΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΡΠΊΠΎΡΠΈΡΡ python ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΡΠ΅ΠΊ ΡΠ·ΡΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΏΡΠΎΡΠ»ΠΎΠΉ Π³Π»Π°Π²Π΅), Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° C/C++ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ .
Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π»ΠΈΡΡ ΠΎ ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π·Π°ΠΉΠΌΡΡ Ρ Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π² ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΡΡΠΎΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ.
Cython
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Cython ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° Python, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²Π°ΠΌ Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΡΠΌΠΌ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ΅Ρ ΡΠ΅Π»Π΅Π²ΠΈΠ·ΠΎΡΠΎΠ², ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΎΠ² ΠΈ ΡΠΎΡΡΠ΅ΡΠΎΠ² Π½Π° ΡΠΈΡΡΠΎΠΌ Python ΠΈ ΡΠ°ΡΡΡΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π·Π°ΡΡΠ°ΡΠ΅Π½ΠΎ (Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ 20.000.000 ΡΠΎΠ²Π°ΡΠΎΠ²):
ΠΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΏΠΎΠ΄ cython:
Π’Π΅ΠΏΠ΅ΡΡ Π² main.py Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π²ΡΠ·ΠΎΠ² cython ΠΊΠΎΠ΄Π°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠΌΠΏΠΎΡΡ Π²ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ:
Π Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ cython ΠΈ Π΅Π³ΠΎ ΠΈΠΌΠΏΠΎΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ python ΠΊΠΎΠ΄
Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠΎΠ΄ cython
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ. ΠΠ±ΡΠ°ΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π±ΡΠ»ΠΎ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ. Π cython, Π³Π΄Π΅ ΠΌΡ Π΄Π΅Π»Π°Π»ΠΈ Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠΎΠ², ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ:
Π ΡΠ°ΠΌ Π³Π΄Π΅ Π±ΡΠ» Π²ΡΠ²ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΡΠΌΠΌ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ:
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ²Π°ΡΠΎΠ² ΡΠΎΠΊΡΠ°ΡΠΈΠ»Π°ΡΡ Ρ 44 Π΄ΠΎ 4 ΡΠ΅ΠΊΡΠ½Π΄, ΡΠΎ Π΅ΡΡΡ ΠΌΡ ΡΡΠΊΠΎΡΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΡΠΈ Π² 11 ΡΠ°Π·. ΠΡΠΈ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ΅ ΡΡΠΌΠΌ Π²ΡΠ΅ΠΌΡ ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎΡΡ Ρ 13 ΡΠ΅ΠΊΡΠ½Π΄ Π΄ΠΎ 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 13 ΡΠ°Π·.
ΠΠ°Π³ΠΈΡ Python
ΠΡΠ²Π°Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° cython ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° (ΠΈΠ»ΠΈ ΠΏΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅), Π° ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, Π³Π΄Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π»ΡΠΌΠ±Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΏΠΈΡΠΊΠΎΠ². Π’ΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΉΡΠΈ PyPy, ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠ·ΡΠΊΠ° python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ JIT ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. ΠΠ΄Π½Π°ΠΊΠΎ PyPy ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ Π²ΡΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π² ΠΊΠΎΠ΄Π΅ ΡΠ°ΠΊΠΎΠ²ΡΠ΅, ΡΠΎ ΠΈΠ·ΡΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ python ΠΊΠΎΠ΄ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ PyPy ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΊΠ°ΡΠ°Π΅ΠΌ PyPy Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°. Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ Π² Π»ΡΠ±ΡΡ ΠΏΠ°ΠΏΠΊΡ, ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ cmd ΠΈ Π·Π°Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡ, Π³Π΄Π΅ ΡΠ΅ΠΏΠ΅ΡΡ Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΉΠ» pypy3.exe, Π² ΡΡΡ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π½Π°Ρ ΠΊΠΎΠ΄ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ. Π’Π΅ΠΏΠ΅ΡΡ Π² cmd ΠΏΡΠΎΠΏΠΈΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, 19 ΡΠ΅ΠΊΡΠ½Π΄ pythonβΠΎΠ²ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π΄ΠΎ 4.5 ΡΠ΅ΠΊΡΠ½Π΄ Π²ΠΎΠΎΠ±ΡΠ΅ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΡΡΠΈ Π² 4 ΡΠ°Π·Π°.
ΠΡΠ²ΠΎΠ΄
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ° Π·Π»ΠΎ Π²ΡΠ΅ΠΌ Ρ Π΅ΠΉΡΠ΅ΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ python ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ, ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΡΡΠΈΡΡ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² Π΄Π΅ΡΡΡΠΊΠΈ ΡΠ°Π·.
ΠΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π½Π΅ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Numba, NumPy, Nim ΠΈΠ»ΠΈ multiprocessing. ΠΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡΡ Π·Π°Π΄Π°ΡΡ Π²Ρ ΡΠ΅ΡΠ°Π΅ΡΠ΅. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ ΡΠ΅ΡΠ°ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ python Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΡΠ΅ΡΠΈΡΡ Π²ΡΡ Π½Π° ΡΡΠΎΠΌ ΡΠ²Π΅ΡΠ΅.


