ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π£ΡΠΈΠΌΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Python
ΠΡΠ° ΡΡΠ°ΡΡΡ Π½Π΅ Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡ
ΡΠΊΡΠΎΡΠΈΡΠ΅Π»Π΅ΠΉ PythonβΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΡΠ°ΡΠΏΡΡΠ°ΡΡ ΡΡΠΎΡ ΠΊΠ»ΡΠ±ΠΎΠΊ Π·ΠΌΠ΅ΠΉ β Π΄Π΅ΡΡΠΊΠ°Ρ Π·Π°Π±Π°Π²Π°, Π° ΡΠΊΠΎΡΠ΅Π΅ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠ½ΡΠΉ ΠΎΠ±Π·ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ΄ΡΠ΅Π²ΡΠΈΡ
Π½Π° ΠΏΠΈΡΠΎΠ½.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π² Python Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π° ΠΏΠΈΡΠΎΠ½Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ»ΡΡΠ°Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎ GIL, ΠΌΠ½Π΅ ΡΡΠ°Π»ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΡΡ Ρ Π·Π°Π²ΠΈΠ΄Π½ΠΎΠΉ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΡΡΡΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΌΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡΠΎΠ½Π°, ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ GIL ΠΈ ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌ (ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ) ΠΆΠΈΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Python β ΠΎΡΠ°ΡΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π½Π΅ΠΌ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠΎΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π·Π°Π΄Π°Ρ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠΈΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΡΠ΅ΡΠ°ΡΡΡΡ Π·Π΄Π΅ΡΡ Π»Π΅Π³ΠΊΠΎ, ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ. ΠΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΠΈΡ Π·Π°Π΄Π°Ρ Π·Π°ΡΠ°ΡΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π° ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠ΅. Π§Π΅Π³ΠΎ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅ΡΡ ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ .
ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π Python Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ threading, ΠΈ Π² Π½Π΅ΠΌ Π΅ΡΡΡ Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΡΡΡ Π΅ΡΡΡ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π»ΠΎΠΊΠΈ, ΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡ, ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ΄ΠΈΠ½ ΡΠ»ΠΎΠ²ΠΎΠΌ β Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΠΈΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΠ΅ΠΌ ΡΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ 2 ΠΏΠΎΡΠΎΠΊΠ°. ΠΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΏΠΈΡΠ΅Ρ Π΄Π΅ΡΡΡΡ β0β, Π΄ΡΡΠ³ΠΎΠΉ β Π΄Π΅ΡΡΡΡ β1β, ΠΏΡΠΈΡΠ΅ΠΌ ΡΡΡΠΎΠ³ΠΎ ΠΏΠΎ-ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
ΠΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ ΠΈ voodoo-ΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ ΡΠ΅ΡΠΊΠΈΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ. ΠΡΠΈΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π·Π°Π΄Π°Ρ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΡΠΎΡ ΠΊΠΎΠ΄ Π΅ΡΠ΅ ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ. ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ 3-ΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΈΡΠ΅Ρ β2β, ΡΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅, Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈ ΡΠ»Π΅Π³ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ
ΡΡΠ°ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ (ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MapReduce, Π½ΠΎ ΡΡΠΎ ΡΠΆΠ΅ Π²ΡΡ
ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ).
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ. ΠΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. ΠΠΎΠ΅Ρ
Π°Π»ΠΈ Π΄Π°Π»ΡΡΠ΅.
Global Interpreter Lock
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π΅ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ: Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ cΠΎΠ²ΡΠΌΠ΅Π½Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ², Π° Π·Π½Π°ΡΠΈΡ, ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ;
Π²ΠΎ-Π²ΡΠΎΡΡΡ
, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΈΠ½Π³ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ).
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Python (Π° ΡΠΎΡΠ½Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CPython), ΠΊΠ°ΠΊ Global Interpreter Lock (ΠΈΠ»ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎ GIL). ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ GIL Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π½Π΅ Π±ΡΠ»ΠΎ Π±ΠΎΡΡΠ±Ρ Π·Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠ°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² Python Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ Π΄Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ (thread safety).
ΠΠΎ ΡΡΡ Π΅ΡΡΡ ΡΠΎΠ½ΠΊΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ: ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ²Π½ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅, Π΄Π΅Π»Π°ΡΡΠ΅Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΠΈΠ»ΠΈ Π·Π° ΡΡΠΌΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° CPU. ΠΠΎ ΡΡΡ Π½Π°Ρ ΠΏΠΎΠ΄ΠΆΠΈΠ΄Π°Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΡΠΎ ΠΏΠΈΡΠ΅Ρ Π² ΡΠ°ΠΉΠ» ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ ΡΡΡΠΎΠΊ β1β ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π·Π°
0.35 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π° ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄ΡΡΠ³ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ 2 ΠΏΠΎΡΠΎΠΊΠ°. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΎΠ½Π° ΠΏΠΈΡΠ΅Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»ΠΈΠΊ ΠΏΠΎ ΠΏΠΎΠ» ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΡΡΠΎΠΊ β1β. ΠΠΎ-ΡΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π Π²ΠΎΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡ 0.7 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π΄ΠΎ Π°ΠΆ 7 ΡΠ΅ΠΊΡΠ½Π΄. ΠΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΡΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ?
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠ΅ΡΡΡΡΠ΅ CPU β ΠΎΠ½ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ GIL, Π° Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈ ΠΎΠ½ ΡΠ°ΠΌ, ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΈ Π΅ΡΠ΅ ΠΈ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Π·Π½Π°Ρ, ΡΡΠΎ ΡΠ΄Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ³ΡΠ±ΠΈΡΡ Π²ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΎΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΡΠΎΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΄ΡΠ°ΠΌΠΈ.
UPD: Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² Python 3.2 ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ»ΡΡΡΠ΅Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ GIL, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π·Π° ΡΡΠ΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ΅ΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΆΠ΄Π΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΡΡ Π·Π°Ρ Π²Π°ΡΠΈΡΡ GIL (Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ Π΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ)
Β«ΠΡΡ ΠΎΠ΄ΠΈΡ Π½Π° Python Π½Π΅Π»ΡΠ·Ρ ΠΏΠΈΡΠ°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ?Β», β ΡΠΏΡΠΎΡΠΈΡΠ΅ Π²Ρ. ΠΠ΅Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΡΡ ΠΎΠ΄ Π΅ΡΡΡ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ.
ΠΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅, Π² Python Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ subprocess. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ΅). Π Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΅Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΠ» Π±Ρ ΡΠ°Π±ΠΎΡΡ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ GIL Π½Π΅ Π·Π°Π±ΠΈΡΠ°ΡΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΄ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΡΡΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅ Π΅ΡΡΡ ΠΌΠ°ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΡΠ΄Π½ΠΎ. ΠΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π°Π»Π°ΠΆΠΈΠ²Π°ΡΡ ΡΠ²ΡΠ·Ρ ΡΠ΅ΡΠ΅Π· PIPE ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, Π° Π²Π΅Π΄Ρ Π²ΡΠ΅ ΡΡΠΎ Π½Π΅ΡΠ΅Ρ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΠΈ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ.
ΠΠ΄Π΅ΡΡ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. Π Python Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ multiprocessing. ΠΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ threading. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠ· ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΡΠ΅ ΠΆΠ΅ ΡΠ°ΠΌΡΠ΅, ΡΡΠΎ ΠΈ Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ threading. Π Π²ΠΎΡ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΡΠΈΠ½ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. Π Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎΠ± ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ (Queue) ΠΈ ΠΊΠ°Π½Π°Π»Π°Ρ (Pipe). ΠΠΏΡΠΎΡΠ΅ΠΌ, Π°Π½Π°Π»ΠΎΠ³ΠΈ Π»ΠΎΠΊΠΎΠ², ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π² threading, Π·Π΄Π΅ΡΡ ΡΠΎΠΆΠ΅ Π΅ΡΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ multiprocessing Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Value) ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° (Array), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ βΠΎΠ±ΠΎΠ±ΡΠ°ΡΡβ (share) ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ (Manager). ΠΠ½ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ Π² ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅. ΠΠ΅Π»ΡΠ·Ρ Π½Π΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠΈΡΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΠΈΠΌΠΈ ΡΠΈΠΏΡ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ ctypes Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ multiprocessing.sharedctypes.
ΠΡΠ΅ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ multiprocessing Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ»ΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° Master-Worker ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Map (ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ Master-Worker).
ΠΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ multiprocessing ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ°Π·Π½ΡΡ ΠΠ‘ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, ΡΠΎ Π½Π° ΠΊΠΎΠ΄ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΠ‘ Windows Π½Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° fork, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΡΠΊΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π°Π΄ΠΎ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π²:
ΠΠΏΡΠΎΡΠ΅ΠΌ, ΡΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈ ΡΠ°ΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΡΠΎΠ½ΠΎΠΌ.
ΠΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Python ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Hadoop+Python ΠΈΠ»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ MPI Π½Π° Python (pyMPI, mpi4py). ΠΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π΅ΡΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° Π‘++ ΠΈΠ»ΠΈ Fortran. ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΏΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΡΠΎΡΠΊΠΈ/Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠ°ΠΊ Pyro, Twisted, Tornado ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠΎ ΡΡΠΎ Π²ΡΠ΅ ΡΠΆΠ΅ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
ΠΡΠ»ΠΈ ΠΌΠΎΠΉ ΡΡΠΈΠ»Ρ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ, ΡΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Π½Π° PLY ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ.
ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² C# Π΄Π»Ρ ΡΠ°ΠΉΠ½ΠΈΠΊΠΎΠ²

Π― ΠΏΠΎΠΏΡΡΠ°ΡΡΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ, ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Ρ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠΎΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π°, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ . ΠΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π² ΡΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈ Π±Π΅Π· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅Π»ΡΠ·Ρ. Π ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, Π½ΠΎ Π±ΡΠ΄ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ? ΠΠΎΠΉ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Ρ ΠΏΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ 2 ΡΠ°Π±ΠΎΡΠΈΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΊΠΎΠΏΠ°ΡΡ ΡΠΌΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ Π²ΡΠΊΠΎΠΏΠ°Π΅Ρ ΡΠΌΡ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ 2 ΠΌΠ΅ΡΡΠ°, Π·Π° 1 ΡΠ°Ρ. Π’ΠΎΠ³Π΄Π° Π΄Π²Π° ΡΠ°Π±ΠΎΡΠΈΡ , Π²ΡΠΊΠΎΠΏΠ°ΡΡ ΡΡΡ ΡΠΌΡ Π·Π° ΠΏΠΎΠ»ΡΠ°ΡΠ°. ΠΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΏΡΠ°Π²Π΄Ρ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ 3600 ΡΠ°ΠΊΠΈΡ ΡΠ°Π±ΠΎΡΠΈΡ . Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΎΠ½ΠΈ Π²ΡΠΊΠΎΠΏΠ°ΡΡ ΡΠΌΡ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ 2 ΠΌΠ΅ΡΡΠ° Π·Π° 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ ΠΌΠ΅ΡΠ°ΡΡ, ΡΠΎΠΏΡΠ°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΈ Π½Π΅ΡΠ²Π½ΠΈΡΠ°ΡΡ.
Π― Π½Π°Π΄Π΅ΡΡΡ, Π²Ρ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ Π½ΡΠΆΠ½Π° Π½Π΅ Π²ΡΠ΅Π³Π΄Π°, ΠΈ ΡΡΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Β«ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² β ΡΠ΅ΠΌ Π»ΡΡΡΠ΅Β» ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ. ΠΠΎΡΠΎΠΊΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΌΠ΅ΡΠ°ΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ. Π§ΡΠΎ Π±Ρ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ System.Threading, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ:
ΠΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π² C# ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅, ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΡΡΠΎΠΌΡ, ΡΡΠΎ Π±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΊΠ»Π°ΡΡ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ void ΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²:
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°:
ΠΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Start() Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎΡΠΎΠΊΠ°, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΠ½Π΅ΡΡΡ ΡΡΠ°Π·Ρ, Π½ΠΎ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΆΠ΅ Π½Π°ΡΠ½Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π°Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ. ΠΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ MyThreadFunction ΠΈ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ. ΠΠΎΠΉ Π΄ΡΡΠ³ ΡΠΏΡΠΎΡΠΈΠ» ΠΌΠ΅Π½Ρ, Π° ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅? Π ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π΅Π³ΠΎ Π½Π΅ΠΊΡΠ΄Π° Π²Π΅ΡΠ½ΡΡΡ. ΠΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° Start(), ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π΄Π°Π»ΡΡΠ΅, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΅ΡΠ΅ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. Π§ΡΠΎ Π±Ρ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΡΠΎΠΊ. ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΠ½ Π²ΠΎΡ ΡΠ°ΠΊ:
ΠΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈΠΌ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡ Π² C# Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ Object, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π²Π½ΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠ° Π»ΡΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅. ΠΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΡΡΡΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΡΠΈ ΡΠ°Π·Π° Π½Π° ΡΠΊΡΠ°Π½ Β«ΠΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ!Β», Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΡΠΈ ΡΠ°Π·Π° Π½Π° ΡΠΊΡΠ°Π½ Β«ΠΡΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ!Β». ΠΠΎΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ:
ΠΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ. Π₯ΠΎΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ static, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±Ρ ΠΊ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΈ ΡΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ. ΠΠ±ΡΡΠ½ΠΎ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ°Π·Π½ΡΠΉ. ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°Π΄Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ°Π·Π½ΡΠΉ. ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΈΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅, ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°Π΄Π°Ρ Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΠ°ΠΌ.
ΠΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅. Π§ΡΠΎ Π±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ 10 ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»Π°ΡΡ Π²ΡΠ΅Π³ΠΎ 1 ΡΡΠ½ΠΊΡΠΈΡ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΡΡΠ΅ΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΡΠ²ΠΎΠΈ. Π§ΡΠΎ Π±Ρ ΡΡΠΎ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ°, Π° ΠΏΠΎΡΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΡΡΠΎΡ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΎΡ ΠΊΠΎΠ΄:
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π² ΠΊΠΎΠ½ΡΠΎΠ»Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ 10 ΡΠΈΡΠ΅Π».
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎ Π±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²Π΅Π» ΡΠ΅Π±Ρ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, ΡΠΎ Π΅ΡΡΡ Π΄Π²Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ²ΠΎΠ΅ β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΠ°ΠΊ:
ΠΡΠΎΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΠ΅. Π‘ΠΌΡΡΠ» Π² ΡΠΎΠΌ, ΡΡΠΎ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ, Π²Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎΡΠΎΠΊΠ° Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Β«ΠΊΡΠΎ Ρ?Β». ΠΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π±ΡΠ»Π΅Π²ΡΠΉ ΡΠ»Π°Π³. ΠΡΠ»ΠΈ ΠΎΠ½ ΡΠ°Π²Π΅Π½ ΠΈΡΡΠΈΠ½Π΅ β Π·Π½Π°ΡΠΈΡ ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ, Π΅ΡΠ»ΠΈ Π»ΠΎΠΆΡ β Π·Π½Π°ΡΠΈΡ Π²ΡΠΎΡΠΎΠΉ. ΠΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΠΎΠΊΠ° ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Β«ΠΊΡΠΎ Ρ?Β» ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠΎΠ³ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠΎΡ ΠΊΠΎΠ΄:
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°? ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ²ΠΎΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΡ Π²ΡΠ΄Π°Π»ΠΈ ΡΠ»Π°Π³ true, Π·Π½Π°ΡΠΈΡ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ false β Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Ρ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΎΡΠΈΠΈ. ΠΠΎ Π²ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ³Π΄Π° Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΏΡΡΠ°ΡΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ β ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² C# ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° lock.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠ°). ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΡ ΡΠ°Π½Π½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ lock. ΠΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ:
ΠΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? ΠΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ², Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° lock, ΠΎΠ½ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π»ΠΈ object1. ΠΡΠ»ΠΈ Π½Π΅Ρ β Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ. ΠΡΠ»ΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ β ΠΆΠ΄Π΅Ρ, ΠΊΠΎΠ³Π΄Π° object1 Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ lock ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠΌ.
Π Π²ΠΎΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° lock, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ int ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π Π²ΠΎΠΎΠ±ΡΠ΅, ΠΌΠ½Π΅ ΠΊΠ°ΠΊ ΡΠΎ Π½Π° Ρ Π°Π±ΡΠ΅ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π»ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«Π»ΠΎΠΊΠ΅ΡΡΒ» Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄ΡΡΠ³ΠΈΡ Π΄Π°Π½Π½ΡΡ .
Π’Π΅ΠΏΠ΅ΡΡ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° value, Π° ΠΏΠΎΡΠΎΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΆΠ΅ ΡΡΡ Π½ΡΠΆΠ΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ lock? ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ½Π° Π²ΡΠ²Π΅Π΄Π΅Ρ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ Β«0 1 2 3 4Β». ΠΠΎΡΠΎΠΊΠΈ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ value, ΠΈ Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° lock Π½Π΅ΡΡ. Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
β¦ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ, ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ Β«0 0 1 3 4Β». ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°Π΄Π°Ρ Π½Π΅ Π·Π½Π°ΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π°ΡΡΡΠ°Π΅ΡΡΡ.
ΠΡΠΌΠ°Ρ, Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ Π²Π°ΡΠΈΡ, ΠΈ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π·Π΄Π΅ΡΡ. ΠΠΈΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΡΠ·ΡΠ²Ρ ΠΈ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ. ΠΠ°Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΈ ΠΎΡΠ²Π΅ΡΡ. Π£Π΄Π°ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Π£ΡΠΈΠΌΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Python
ΠΡΠ° ΡΡΠ°ΡΡΡ Π½Π΅ Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡ
ΡΠΊΡΠΎΡΠΈΡΠ΅Π»Π΅ΠΉ PythonβΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΡΠ°ΡΠΏΡΡΠ°ΡΡ ΡΡΠΎΡ ΠΊΠ»ΡΠ±ΠΎΠΊ Π·ΠΌΠ΅ΠΉ β Π΄Π΅ΡΡΠΊΠ°Ρ Π·Π°Π±Π°Π²Π°, Π° ΡΠΊΠΎΡΠ΅Π΅ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠ½ΡΠΉ ΠΎΠ±Π·ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ΄ΡΠ΅Π²ΡΠΈΡ
Π½Π° ΠΏΠΈΡΠΎΠ½.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π² Python Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π° ΠΏΠΈΡΠΎΠ½Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ»ΡΡΠ°Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎ GIL, ΠΌΠ½Π΅ ΡΡΠ°Π»ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΡΡ Ρ Π·Π°Π²ΠΈΠ΄Π½ΠΎΠΉ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΡΡΡΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΌΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡΠΎΠ½Π°, ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ GIL ΠΈ ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌ (ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ) ΠΆΠΈΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Python β ΠΎΡΠ°ΡΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π½Π΅ΠΌ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠΎΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π·Π°Π΄Π°Ρ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠΈΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΡΠ΅ΡΠ°ΡΡΡΡ Π·Π΄Π΅ΡΡ Π»Π΅Π³ΠΊΠΎ, ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ. ΠΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΠΈΡ Π·Π°Π΄Π°Ρ Π·Π°ΡΠ°ΡΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π° ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠ΅. Π§Π΅Π³ΠΎ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅ΡΡ ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ .
ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π Python Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ threading, ΠΈ Π² Π½Π΅ΠΌ Π΅ΡΡΡ Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΡΡΡ Π΅ΡΡΡ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π»ΠΎΠΊΠΈ, ΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡ, ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ΄ΠΈΠ½ ΡΠ»ΠΎΠ²ΠΎΠΌ β Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΠΈΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΠ΅ΠΌ ΡΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ 2 ΠΏΠΎΡΠΎΠΊΠ°. ΠΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΏΠΈΡΠ΅Ρ Π΄Π΅ΡΡΡΡ β0β, Π΄ΡΡΠ³ΠΎΠΉ β Π΄Π΅ΡΡΡΡ β1β, ΠΏΡΠΈΡΠ΅ΠΌ ΡΡΡΠΎΠ³ΠΎ ΠΏΠΎ-ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
ΠΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ ΠΈ voodoo-ΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ ΡΠ΅ΡΠΊΠΈΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ. ΠΡΠΈΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π·Π°Π΄Π°Ρ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΡΠΎΡ ΠΊΠΎΠ΄ Π΅ΡΠ΅ ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ. ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ 3-ΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΈΡΠ΅Ρ β2β, ΡΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅, Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈ ΡΠ»Π΅Π³ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ
ΡΡΠ°ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ (ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MapReduce, Π½ΠΎ ΡΡΠΎ ΡΠΆΠ΅ Π²ΡΡ
ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ).
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ. ΠΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. ΠΠΎΠ΅Ρ
Π°Π»ΠΈ Π΄Π°Π»ΡΡΠ΅.
Global Interpreter Lock
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π΅ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ: Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ cΠΎΠ²ΡΠΌΠ΅Π½Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ², Π° Π·Π½Π°ΡΠΈΡ, ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ;
Π²ΠΎ-Π²ΡΠΎΡΡΡ
, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΈΠ½Π³ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ).
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Python (Π° ΡΠΎΡΠ½Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CPython), ΠΊΠ°ΠΊ Global Interpreter Lock (ΠΈΠ»ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎ GIL). ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ GIL Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π½Π΅ Π±ΡΠ»ΠΎ Π±ΠΎΡΡΠ±Ρ Π·Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠ°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² Python Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ Π΄Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ (thread safety).
ΠΠΎ ΡΡΡ Π΅ΡΡΡ ΡΠΎΠ½ΠΊΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ: ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ²Π½ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅, Π΄Π΅Π»Π°ΡΡΠ΅Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΠΈΠ»ΠΈ Π·Π° ΡΡΠΌΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° CPU. ΠΠΎ ΡΡΡ Π½Π°Ρ ΠΏΠΎΠ΄ΠΆΠΈΠ΄Π°Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΡΠΎ ΠΏΠΈΡΠ΅Ρ Π² ΡΠ°ΠΉΠ» ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ ΡΡΡΠΎΠΊ β1β ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π·Π°
0.35 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π° ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄ΡΡΠ³ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ 2 ΠΏΠΎΡΠΎΠΊΠ°. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΎΠ½Π° ΠΏΠΈΡΠ΅Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»ΠΈΠΊ ΠΏΠΎ ΠΏΠΎΠ» ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΡΡΠΎΠΊ β1β. ΠΠΎ-ΡΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π Π²ΠΎΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡ 0.7 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π΄ΠΎ Π°ΠΆ 7 ΡΠ΅ΠΊΡΠ½Π΄. ΠΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΡΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ?
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠ΅ΡΡΡΡΠ΅ CPU β ΠΎΠ½ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ GIL, Π° Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈ ΠΎΠ½ ΡΠ°ΠΌ, ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΈ Π΅ΡΠ΅ ΠΈ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Π·Π½Π°Ρ, ΡΡΠΎ ΡΠ΄Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ³ΡΠ±ΠΈΡΡ Π²ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΎΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΡΠΎΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΄ΡΠ°ΠΌΠΈ.
UPD: Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² Python 3.2 ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ»ΡΡΡΠ΅Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ GIL, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π·Π° ΡΡΠ΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ΅ΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΆΠ΄Π΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΡΡ Π·Π°Ρ Π²Π°ΡΠΈΡΡ GIL (Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ Π΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ)
Β«ΠΡΡ ΠΎΠ΄ΠΈΡ Π½Π° Python Π½Π΅Π»ΡΠ·Ρ ΠΏΠΈΡΠ°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ?Β», β ΡΠΏΡΠΎΡΠΈΡΠ΅ Π²Ρ. ΠΠ΅Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΡΡ ΠΎΠ΄ Π΅ΡΡΡ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ.
ΠΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅, Π² Python Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ subprocess. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ΅). Π Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΅Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΠ» Π±Ρ ΡΠ°Π±ΠΎΡΡ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ GIL Π½Π΅ Π·Π°Π±ΠΈΡΠ°ΡΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΄ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΡΡΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅ Π΅ΡΡΡ ΠΌΠ°ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΡΠ΄Π½ΠΎ. ΠΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π°Π»Π°ΠΆΠΈΠ²Π°ΡΡ ΡΠ²ΡΠ·Ρ ΡΠ΅ΡΠ΅Π· PIPE ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, Π° Π²Π΅Π΄Ρ Π²ΡΠ΅ ΡΡΠΎ Π½Π΅ΡΠ΅Ρ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΠΈ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ.
ΠΠ΄Π΅ΡΡ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. Π Python Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ multiprocessing. ΠΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ threading. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠ· ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΡΠ΅ ΠΆΠ΅ ΡΠ°ΠΌΡΠ΅, ΡΡΠΎ ΠΈ Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ threading. Π Π²ΠΎΡ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΡΠΈΠ½ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. Π Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎΠ± ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ (Queue) ΠΈ ΠΊΠ°Π½Π°Π»Π°Ρ (Pipe). ΠΠΏΡΠΎΡΠ΅ΠΌ, Π°Π½Π°Π»ΠΎΠ³ΠΈ Π»ΠΎΠΊΠΎΠ², ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ ΡΠ΅ΠΌΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π² threading, Π·Π΄Π΅ΡΡ ΡΠΎΠΆΠ΅ Π΅ΡΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ multiprocessing Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Value) ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° (Array), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ βΠΎΠ±ΠΎΠ±ΡΠ°ΡΡβ (share) ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ (Manager). ΠΠ½ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ Π² ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅. ΠΠ΅Π»ΡΠ·Ρ Π½Π΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠΈΡΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΠΈΠΌΠΈ ΡΠΈΠΏΡ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ ctypes Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ multiprocessing.sharedctypes.
ΠΡΠ΅ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ multiprocessing Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ»ΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° Master-Worker ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Map (ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ Master-Worker).
ΠΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ multiprocessing ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ°Π·Π½ΡΡ ΠΠ‘ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, ΡΠΎ Π½Π° ΠΊΠΎΠ΄ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΠ‘ Windows Π½Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° fork, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΡΠΊΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π°Π΄ΠΎ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π²:
ΠΠΏΡΠΎΡΠ΅ΠΌ, ΡΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈ ΡΠ°ΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΡΠΎΠ½ΠΎΠΌ.
ΠΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Python ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Hadoop+Python ΠΈΠ»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ MPI Π½Π° Python (pyMPI, mpi4py). ΠΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π΅ΡΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° Π‘++ ΠΈΠ»ΠΈ Fortran. ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΏΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΡΠΎΡΠΊΠΈ/Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠ°ΠΊ Pyro, Twisted, Tornado ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠΎ ΡΡΠΎ Π²ΡΠ΅ ΡΠΆΠ΅ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
ΠΡΠ»ΠΈ ΠΌΠΎΠΉ ΡΡΠΈΠ»Ρ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ, ΡΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Π½Π° PLY ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ.
ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ Python Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ : ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΠ»ΠΈ ΠΎΠΏΡΡΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈ ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠ±Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΈΡΠΎΠ½ΡΡΡΠ΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² β ΡΡΠΎ Π΅Ρ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈΠ·-Π·Π° GIL, β ΡΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅, ΠΈ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΠ΅: ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ β ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π°ΠΌ ΡΡΠΎΠ³ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ Π½Π°Π΄ΠΎ. Π Π·Π½Π°Π΅ΡΠ΅ ΡΡΠΎ? Π’Π°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π΅ΡΡΡ. ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ β ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ² ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΡΡ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΅Π»ΠΊΠΎΠΉ Π² ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΌΠΈΡ. Π, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΠΈ Π·Π΄Π΅ΡΡ, Π½ΠΈ Π΄Π°Π»Π΅Π΅ Ρ Π½Π΅ Π±ΡΠ΄Ρ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Python ΠΈ ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΊ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ.
ΠΡΠ»ΠΈ ΡΡΠ° ΡΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡ, Π·Π° Π½Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΈΡ Π½Π° ΡΡ ΠΆΠ΅ ΡΠ΅ΠΌΡ: ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π½Π° Python. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π±ΡΠ΄ΡΡ Π²Π·ΡΡΡ ΠΈΠ· ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Polog, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΠΈΡΡ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ Ρ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΡΡ Π²ΡΠ½Π΅ΡΡΠΈ Π²ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ Π² ΡΡΡ ΡΡΠ°ΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΎ-Π°Π³Π½ΠΎΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅. Π ΡΠ°ΠΌ, Π³Π΄Π΅ Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π½Π΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ, Π±ΡΠ΄Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, Π² ΡΡΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° ΡΠΎΡΡΠΎΠΈΡ. Π₯ΠΎΡΠ΅ΡΡΡ Π²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΡΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π·Π° ΡΡΡΡ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ²ΡΠ·Π΅ΠΉ, ΡΡΠΎ Π»ΠΈ.
ΠΠΈΡΠΊΠ»Π΅ΠΉΠΌΠ΅Ρ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Ρ ΠΏΡΠΈΠ²ΠΎΠΆΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°, Ρ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π½Π΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Ρ, ΡΡΠΎ ΠΎΠ½ Π½Π°ΠΏΠΈΡΠ°Π½ Π»ΡΡΡΠΈΠΌ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ². ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Ρ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² Π½ΡΠΌ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ°ΡΠ°Π»ΡΠ½ΡΡ ) Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ². ΠΡΠ»ΠΈ Π²Π΄ΡΡΠ³ Π²Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π±ΡΠ»ΠΎ Π±Ρ ΠΊΡΡΡΠΎ, Π½Π΅ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ ΡΠ΅Π±Ρ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π·Π΄Π΅ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π»ΠΈΠΊΠ±Π΅Π·Π° ΠΏΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ ΡΠΆΠ΅ ΠΏΡΠΎΡΠΈΡΠ°Π»ΠΈ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ threading ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ Ρ ΠΎΡΡ Π±Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΠ΅ΠΌΠΎΠΉ. ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΡΠ½ΡΡΡ, ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ Π²Π°ΡΠ΅ΠΉ Π±Π°Π±ΡΡΠΊΠΈ, ΠΊΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠΈ Π½Π°ΡΠΈ Π»ΠΎΠΊΠΈ (ΠΈ ΠΊΠ°ΠΊΠΎΠ²Ρ ΠΈΡ ΡΠ΅ΠΌΠ΅ΠΉΠ½ΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Ρ Π΄Π΅Π΄ΠΎΠΌ), ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΠ½ΠΊΠΈ ΠΈ Π²ΡΡΠΊΠΎΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. ΠΡΠΎ ΡΡΠΎ Π²ΡΡ Π²Ρ ΡΠΆΠ΅ ΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠΈΡΠ°Π»ΠΈ ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π½Π΅ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΠΊΠ°ΠΊ Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
Π§Π΅Π³ΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ?
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Ρ ΡΠ°Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΊΡΡΠΏΠ½ΡΠ΅ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΠΈ Ρ ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ Π΄Π΅Π»Π°Π» ΡΠ°ΠΊ ΠΆΠ΅. Π’Π°ΠΊ ΠΏΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΠΏΠΎ ΠΈΡΠΎΠ³Ρ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π²ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΡΠ²Π°ΡΡ? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π²Π½ΡΡΡΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ:
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π³ΠΈΠ±ΠΊΠ°Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΈΡΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ ΡΠ΄Π΅Π»Π°Π» Π½Π΅ ΡΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ).
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π°Π»ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅, Π½ΠΎ ΠΈ ΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π² Polog ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° Π΄Π²ΠΈΠΆΠΊΠΎΠ²: ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ (Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ ) ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ. Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΏΠΎΠ΄Π³ΡΡΠΆΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° pool_size ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0, Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ β ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ. ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎ ΡΡ Π΅ΠΌΠ΅ producerβconsumer Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΡΠ΅ΡΠ΅Π΄Ρ. Π’Π°ΠΊ Π²ΠΎΡ, Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ°ΠΌΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π»ΠΈΠΌΠΈΡ β ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ, Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ, ΠΎΡΡΠ°Π²ΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0 ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Β«ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉΒ» ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ pool_size ΡΠ°Π²Π½ΡΠΉ Π½ΠΎΠ»Ρ, ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ max_queue_size (Π»ΠΈΠΌΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ) Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π² ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ Π΄Π²ΠΈΠΆΠΊΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π΅Ρ. Π₯ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ β Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠ»Π° ΠΈ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ β ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ Π²Π°Π»ΠΈΠ΄Π½ΠΎ, ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΊΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΌΡ ΡΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠΈΠ½ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ.
ΠΡΠΆΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΡ ΠΎΠ΄Π½ΠΎ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΡΠ°ΠΊ: ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΠΈΡΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π»ΠΎΠ³Π° Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ Π½ΡΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠ½ΠΊΡΠΎΠ² Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΠΈ ΠΏΠΎΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π»ΠΎΠ³ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ Π²ΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ Π½Π° ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ°Π»ΡΡΠ΅ ΡΠΆΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π±ΡΠ»ΠΎ Π½Π΅Π»ΡΠ·Ρ. Π’Π°ΠΊ Π±ΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ, Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠ½ΠΊΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΠ² ΠΏΡΠΈ ΡΡΠΎΠΌ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°Π»ΡΡΠ΅ ΡΡΠ°Π½Π΅Ρ ΡΡΠ½ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΏΡΠΎΡΡΠΎ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠ½ΠΊΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΡΠΈΡΠ΅Π½ΠΎ ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π³ΠΎΠ½ΠΊΠΈ.
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ»ΠΎΠ²Π°ΡΡ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π° Π΅ΡΡ ΡΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΏΡΠΎΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΌ.
ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ
Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ, ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»ΠΎΠ²Π°ΡΡ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠΎΠ². ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ:
ΠΠ»ΡΡΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΠΎΠ²Π°ΡΠ΅ β ΠΈΠΌΠ΅Π½Π° ΠΏΡΠ½ΠΊΡΠΎΠ² Π½Π°ΡΡΡΠΎΠ΅ΠΊ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΠ°Π½ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΌΠ΅Π½Π½ΠΎ Π² ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ΠΊΠ»Π°ΡΡΠ° SettingPoint ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΡΠΈ Π²ΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π²ΡΡΠ΅ ΠΌΠ°Π³ΠΈΡ: Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ ΠΊΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ ΠΊΡΠ°ΡΠΈΠ²ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Π²ΡΡ ΠΏΡΠΎΡΠ΅Π΅. ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°Ρ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ°Π»ΠΈΠ΄ΠΈΡΡΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Π Π°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° SettingPoint ΠΌΡ Π½Π°ΡΠ½ΡΠΌ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ β ΠΊΠ°ΠΊ Π²Π°Π»ΠΈΠ΄ΠΈΡΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΠΎΠΌΠ½Ρ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ proves :
ΠΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΠΌ Π·Π°Π΄Π°ΡΡ: ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π½Π΅ ΠΎΠ±ΡΠ°Π·ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ, Ρ ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ Π²Π°Π»ΠΈΠ΄Π½ΠΎ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° SettingPoint ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΡΠ»ΠΎΠ²Π°ΡΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ², ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ:
ΠΠ»ΡΡΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΠΎΠ²Π°ΡΠ΅ β ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ½ΠΊΡΠ° Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π² ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅; Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ; ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΠΈΡΠ΅ΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΏΠΎΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄:
Π§ΡΠΎ ΠΆ, ΠΌΡ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° β ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ΅Π½ΡΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅
ΠΡΠ½ΠΊΡΠΎΠ² Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Π½ΠΎ Ρ ΠΎΠΏΠΈΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ , Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΠ²ΠΎΠ·ΠΈΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Ρ . Π§ΡΠΎΠ±Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΠΏΡΠΈΠ΄ΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡ Π² ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅. ΠΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ, Π±Π΅Π· Π½Π΅Ρ Π½ΠΈΠΊΡΠ΄Π°.
ΠΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ΄ΡΠΎ Polog Π±ΡΠ»ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌ, Π½Π° Π±Π°Π·Π΅ ΡΠ°ΠΌΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ thread pool. Π’ΡΠ΅Π΄ΠΏΡΠ» ΡΠ°Π±ΠΎΡΠ°Π» ΠΏΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ-ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊ, ΡΠΎ Π΅ΡΡΡ ΡΠΎΡΡΠΎΡΠ» ΠΈΠ· ΡΡ`Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ:
ΠΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π»ΠΎΠ³ΠΈ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
ΠΠ°Π±ΠΎΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²-Π²ΠΎΡΠΊΠ΅ΡΠΎΠ². Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ Π·Π°ΠΏΡΡΠ΅Π½ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ· Π½ΠΈΡ Π·Π°Π±ΠΈΡΠ°Π΅Ρ Π»ΠΎΠ³, ΠΎΠ½ ΡΡΠ°Π·Ρ Π΅Π³ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² ΡΠ°ΠΉΠ».
ΠΠΎΡΠΊΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈΡΡ Β«Π»Π΅Π½ΠΈΠ²ΠΎΒ», Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π»ΠΎΠ³Π°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π»ΡΠ±ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ΅Π΄ΠΏΡΠ» ΠΏΠΎΠ»ΡΡΠ°Π»ΡΡ Β«ΠΏΡΠΈΠΊΠΎΠ»ΠΎΡΠ΅Π½Π½ΡΠΌ Π³Π²ΠΎΠ·Π΄ΡΠΌΠΈΒ». ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π»ΠΎΠ³Π° ΡΠΆΠ΅ Π½ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ², Π½ΠΈ ΡΠ±ΡΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΡ . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π΅ΡΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°: ΠΊΠ»Π°ΡΡ Π΄Π²ΠΈΠΆΠΊΠ° ΡΠΎΠΆΠ΅, ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΠΏΡΠΈΠΊΠΎΠ»ΠΎΡΠ΅Π½. ΠΠ°Π»ΠΈΠ΄Π½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΡΡΠ΅Π΄ΠΏΡΠ»Π° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π±ΡΠ»ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ»ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π΄ΠΏΡΠ»Π° Β«Π½Π° Π»Π΅ΡΡΒ»:
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠ΅Π΄ΠΏΡΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΡΠ°ΡΡΡ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ². ΠΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π»Π΅Π³ΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ²; ΡΡΠ°Π²Π½ΠΈΡΡ Π΅Π³ΠΎ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ; ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΈΠ»ΠΈ ΡΠ±ΠΈΡΠ°Π΅ΠΌ; ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.
ΠΠ±Π΅ΡΠ½ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Ρ ΡΡΠ΅Π΄ΠΏΡΠ»ΠΎΠΌ Π² ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠΎΠ²Π½Π΅ΠΌ Π²ΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠ» Ρ Π½ΡΠ»Ρ.
ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½Π΅Π΅. ΠΠ°Π΄ΠΎ Π½Π°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ 101-ΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΌΡ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΡ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠΎΡΠ½ΠΈ. ΠΡ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΠΌ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΏΡΠ». ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π²ΡΠ±ΡΠ°Π» Π²ΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅Π³ΠΎ API ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π΅Π΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π»ΡΠ±ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π΄Π²ΠΈΠΆΠΊΠ°, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ². ΠΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β ΡΡΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½ΠΎΠ²ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ. Π£ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΡΡΠ°ΡΠΈ, Π±ΡΠ» Π²Π°ΠΆΠ½ΡΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ: ΡΡΠ°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π²ΠΈΠΆΠΊΠΎΠ². Π‘ΡΠ°ΡΡΠΉ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ, Π° Π½ΠΎΠ²ΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊΠΈΠΌ ΡΠ³ΠΎΠ΄Π½ΠΎ, ΠΎΠ½ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ ΡΠΎ ΡΡΠ°ΡΡΠΌ ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠΈΠΌΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ.
Β«ΠΠ°ΡΡΠΎΡΡΠΈΡ Β» Π΄Π²ΠΈΠΆΠΊΠΎΠ² (Π½Π΅ ΠΎΠ±ΡΡΡΠΎΠΊ) Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π²Π° ΡΠΈΠΏΠ°: ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ, ΠΊΠ°ΠΊ Ρ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π» Π²ΡΡΠ΅. ΠΡ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π²ΠΎΡ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ:
ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² (Π½Π°ΡΡΡΠΎΠΉΠΊΠ° pool_size ) Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ, ΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° Π±Π°Π·Π΅ ΡΡΠ΅Π΄ΠΏΡΠ»Π°. Π Π΅ΡΠ»ΠΈ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ, ΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅Ρ ΡΡΠ΅Π΄ΠΏΡΠ»Π°, Π° Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΡΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π»ΠΎΠ³ ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½.
ΠΠ»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΡΠΎ Π²ΡΡ. ΠΠ΅ΡΠΎΠ΄ ΡΠ°ΠΌΠΎΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΏΡΡΡΠ°Π½ Π² ΠΊΠ»Π°ΡΡΠ΅, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΈ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π΄ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ.
ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, Π²Π΅Π΄Ρ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ, Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΠ² Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π° Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ ΡΠΎΠΆΠ΅ Π³Π»ΡΠ½Π΅ΠΌ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΠ΄ΡΠΈ Π΄Π°Π»ΡΡΠ΅:
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π²ΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΌΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²Π½ΡΡΡΠΈ ΠΏΡΠ»Π°, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠ²Π°Π»ΠΈΠΌΡΡ Π² Π½Π΅Π³ΠΎ:
ΠΡΠ°ΠΊ, Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠ»Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΡΠΈ ΡΡΠ°ΠΏΠ°:
ΠΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ, ΠΏΠΎΠΊΠ° ΠΎΡΠ΅ΡΠ΅Π΄Ρ Ρ Π»ΠΎΠ³Π°ΠΌΠΈ ΠΎΠΏΡΡΡΠ΅Π΅Ρ. ΠΡΠΈ ΡΡΠΎΠΌ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π΅Ρ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ», Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π΄Π°Π»ΡΡΠ΅. ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΎΠΏΡΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ β ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΈΠΊΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΡΡΠ°.
Π‘ΠΎΠΎΠ±ΡΠ°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π²ΠΎΡΠΊΠ΅ΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½Π΅Π³ΠΎ Π½Π° ΡΡΠΊΠ°Ρ
Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²Π·ΡΡΡΠΉ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π»ΠΎΠ³, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅ΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π°ΡΠΈΠ»ΡΠ½ΠΎ ΠΈ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ Π²Π΅ΠΆΠ»ΠΈΠ²ΠΎ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ. ΠΠΎΡΠΊΠ΅Ρ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ (Π½Π° ΡΡΠΎ ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π΄Π°Π»ΡΡΠ΅), ΠΏΠΎΠ»ΡΡΠΈΠ² ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π²Π·ΡΡΡΠΌ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π»ΠΎΠ³ΠΎΠΌ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π΄ΠΎΠ±ΡΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠΈΡΠΈΠ΄Π½ΡΡΡΡΡ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ».
ΠΠΆΠΎΠΉΠ½ΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ Ρ Π²ΠΎΡΠΊΠ΅ΡΠΎΠΌ.
ΠΠ½ΡΡΡΠΈ Π²ΠΎΡΠΊΠ΅ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True ΡΠ»Π°Π³Π° self.stopped :
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΏΠΎΡΠ°ΡΠΊΡΡΠΈΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΌΠ½Π΅ ΠΈ ΡΠ°ΠΌΠΎΠΌΡ Π΅Π³ΠΎ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΡΠΌΠ΅ΡΡΠΈΡΡ. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΠ΅ΠΌΡ Π·Π΄Π΅ΡΡ Π΄Π²Π° Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΈΠΊΠ»Π°, Π° Π½Π΅ ΠΎΠ΄ΠΈΠ½, ΠΊΠ°ΠΊ Ρ ΠΎΠ±Π΅ΡΠ°Π» ΡΠ°Π½Π΅Π΅. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²ΠΎΡΠΊΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π΄Π°Π½Π½ΡΡ Π±Π΅Π· ΡΠ°ΠΉΠΌΠ°ΡΡΠ°, ΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΠΆΠ΄Π°Π»ΠΈΡΡ Π±Ρ ΠΎΠΏΡΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΏΡΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠ»Π°Π³ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈ Π΄Π°Π»ΡΡΠ΅ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΄Π°Π»ΠΈ Π±Ρ Π΅Π³ΠΎ. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎΡΠΊΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π½Π΅ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Β«ΠΏΡΠΎΡΡΠΏΠ°Π΅ΡΡΡΒ», ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π΅ ΠΏΠΎΠΏΡΠΎΡΠΈΠ»ΠΈ Π»ΠΈ Π΅Π³ΠΎ ΠΏΡΠ΅ΡΠ²Π°ΡΡΡΡ. ΠΠ΅ ΠΏΠΎΠΏΡΠΎΡΠΈΠ»ΠΈ β ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
ΠΡΡΠ΅ ΠΌΡ Π²ΡΡΡΠ½ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄Π²ΠΈΠΆΠΊΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π΄Π΅ΡΡ ΠΌΠ½Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ Π²Π΅ΡΠ½ΡΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π°Π΄, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ Π΅ΡΡ ΠΎ ΠΏΠ°ΡΠ΅ Π²Π°ΠΆΠ½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ².
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΌΠ΅Π½Π΅ Π΄Π²ΠΈΠΆΠΊΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ Π²ΡΡ ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π³ΠΎ ΠΎΠ±ΡΡΡΠΊΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π»ΠΎΠ³Π³Π΅ΡΡ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΡΡΠΊΡ Π΄Π²ΠΈΠΆΠΊΠ° ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌ. ΠΠΎΠ΄ Π½ΠΈΠΆΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π΄Π²ΠΈΠΆΠΊΠ° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π»ΠΎΠ³ Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΏΠΎΠΊΠ° Π΄Π²ΠΈΠΆΠΎΠΊ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ, Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½, ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ ΡΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π²ΡΡ ΡΠΆΠ΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, Π½ΠΈΡΠ΅Π³ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠ². ΠΠΎΠ³ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ ΠΈ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΠ΅ΡΡΡ.
ΠΡΠ»ΠΈ Π²Ρ Π΄ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° ΠΈ Π²ΡΡ Π΅ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΠΎ Π²ΠΎΡ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΠΊΠ°Π· ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ½ΠΊΡΠ° pool_size :
Π£ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠ½ΠΊΡΠΎΠ² Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΡΡ Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠΏΡΠΎΡΠ΅, Π½ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π²Ρ Π΄ΠΎΡΠΈΡΠ°Π»ΠΈ, Π° Π½Π΅ ΠΏΡΠΎΠ»ΠΈΡΡΠ°Π»ΠΈ, ΡΡΠ°ΡΡΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°, Π²Π°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠ³ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ΅ΡΠ΅ΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π΄Π»Ρ ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ ΠΈΠΌ Π·Π°Π΄Π°ΡΠΈ (Π° Π΅ΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅ Π²Ρ ΡΠΆΠ΅ Π΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΡΠΌ). ΠΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π½Π°Π²ΠΎΡΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΡΡΡΡ Π½Π΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΡΠ΅ΡΡ. ΠΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°, ΠΏΡΠΈΡΡΠΌ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΡΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π΅Π½Π°ΠΈΠ²Π½ΠΎΡΡΠΈ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Π Ρ Π½Π΅ Π·Π½Π°Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΡ Π΅ΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ. ΠΠ°ΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡ Π½Π΅ ΠΏΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ. Π ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ β ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ.

