homework for the spring course 2023
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ predict_message_mood, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠ°ΠΌΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ ΡΡΡΠΎΠΊΡ, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ SomeModel ΠΈ ΠΏΠΎΡΠΎΠ³ΠΈ Ρ ΠΎΡΠΎΡΠ΅ΡΡΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ:
- "Π½Π΅ΡΠ΄", Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ bad_threshold
- "ΠΎΡΠ»", Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ good_threshold
- "Π½ΠΎΡΠΌ" Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ
ΠΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΡ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΠ°ΠΉΠ»Π° ΡΡΠ°Π·Π° ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Π½Π°Π±ΠΎΡ ΡΠ»ΠΎΠ², ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ (Π·Π½Π°ΠΊΠΎΠ² ΠΏΡΠ΅ΠΏΠΈΠ½Π°Π½ΠΈΡ Π½Π΅Ρ). ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π° Π²Ρ ΠΎΠ΄ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΡΠ°ΠΉΠ»Π° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΈΠ· Π½ΠΈΡ (ΡΡΡΠΎΠΊΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ), Π³Π΄Π΅ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΎΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠΎΠΈΡΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎ ΠΏΠΎΠ»Π½ΠΎΠΌΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ²Π° Π±Π΅Π· ΡΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°.
1. ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ json, ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΡΠ½, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π΅ Π±ΡΠ»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΠΈΠΌΡ.
Π€ΡΠ½ΠΊΡΠΈΡ, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΡΠΎΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ json, ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΡΠΎΠ³ΠΎ json. Π£ΠΏΡΠΎΡΡΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ json ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ-Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΈΡΡΠΌ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ.
3. Π£Π·Π½Π°ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΏΠΎΠΊΡΡΡΠΈΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ coverage
ΠΡΠΈ ΡΡΠΎΠΌ:
- CustomList Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΎΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°
list
; - ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ CustomList ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΈ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ:
- ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ CustomList ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ°ΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΈ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ:
- ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/Π²ΡΡΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ;
- ΠΏΡΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ/Π²ΡΡΠΈΡΠ°Π½ΠΈΠΈ ΡΠΏΠΈΡΠΊΠΎΠ² ΡΠ°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΡΡΠΈΡΠ°ΡΡΡΡ Π½ΡΠ»ΡΠΌΠΈ;
- ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ (==, !=, >, >=, <, <=) ΡΠΊΠ·Π΅ΠΌΠΌΠΏΠ»ΡΡΠΎΠ² CustomList Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ ΡΡΠΌΠΌΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠΎΠ² (ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ list Π½Π΅ Π½ΡΠΆΠ½ΠΎ);
- Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ str, ΡΡΠΎΠ±Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΈ ΠΈΡ ΡΡΠΌΠΌΠ°;
- ΡΠΏΠΈΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ.
1. ΠΠ΅ΡΠ°ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π°ΡΠ°Π»Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π²ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΡΠΎΠΌΠ΅ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΡ , Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΡΠ΅ΡΠΈΠΊΡ "custom_"
ΠΠΎΠ΄ΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π°ΡΡΠΈΠ±ΡΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ°, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°.
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠΉ O(1). Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π»ΡΠ±ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OrderedDict.
1. ΠΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΊΠ°ΡΠΊΠΈ Π½Π°Π±ΠΎΡΠ° ΡΡΠ»ΠΎΠ²
master-worker cΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
- ΠΠ°ΡΡΠ΅Ρ ΠΈ Π²ΠΎΡΠΊΠ΅ΡΡ ΡΡΠΎ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ;
- ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅;
- ΠΠ°ΡΡΠ΅Ρ ΡΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎ TCP ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠ»Ρ Π΄Π»Ρ ΠΎΠ±ΠΊΠ°ΡΠΊΠΈ;
- ΠΠ°ΡΡΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π°ΠΏΡΠΎc ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· Π²ΠΎΡΠΊΠ΅ΡΠΎΠ²;
- ΠΠΎΡΠΊΠ΅Ρ ΡΠΈΡΠ°Π΅Ρ url ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°;
- ΠΠΎΡΠΊΠ΅Ρ ΠΎΠ±ΠΊΠ°ΡΠΈΠ²Π°Π΅Ρ url ΠΏΠΎ http ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΠΎΠΏ K ΡΠ°ΠΌΡΡ ΡΠ°ΡΡΡΡ ΡΠ»ΠΎΠ² ΠΈ ΠΈΡ ΡΠ°ΡΡΠΎΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ json {"word1": 10, "word2": 5};
- ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ»Π° ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ²Π΅ΡΡΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ: ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ»ΠΎΠ² Π±ΡΠ»ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΌΠΌΠ°ΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠΈ Π²ΠΎΡΠΊΠ΅ΡΠ°ΠΌΠΈ;
python server.py -w 10 -k 7
(ΡΠ΅ΡΠ²Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 10 Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΠΊΠ°ΡΠΊΠΈ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΠΎΠΏ-7 ΡΠ°ΡΡΡΡ
ΡΠ»ΠΎΠ²)
Π£ΡΠΈΠ»ΠΈΡΠ°, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΡ Ρ ΡΡΠ»Π°ΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΠΎ TCP Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΡΠ°ΠΉΠ» Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ (ΠΏΠΎΡΡΠ΄ΠΊΠ° 100 ΡΠ°Π·Π½ΡΡ url);
- ΠΠ° Π²Ρ ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° --- ΡΠ°ΠΉΠ» Ρ URL'Π°ΠΌΠΈ ΠΈ M (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ²);
- ΠΠ»ΠΈΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ M ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΈ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠ²Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΡΡΠ°Π½Π΄Π°ΡΡΡΠΉ Π²ΡΠ²ΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
xxx.com: {'word1': 100, 'word2': 50}
.
python client.py 10 urls.txt
.
ΠΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ Π² ΠΊΠ»Π°ΡΡΡ/ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΠΎΠ±ΠΊΠ°ΡΠΊΠΈ ΡΠΏΠΈΡΠΊΠ° ΡΡΠ»ΠΎΠ² Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ· aiohttp.
ΠΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΈΠΏΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ:
- ΠΊΠ»Π°ΡΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ
- ΠΊΠ»Π°ΡΡ ΡΠΎ ΡΠ»ΠΎΡΠ°ΠΌΠΈ
- ΠΊΠ»Π°ΡΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ weakref ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΈ Π·Π°ΠΌΠ΅ΡΡΠ΅ΡΡΡ (ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ):
- Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΡΠΊΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ²
- Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½ΠΈΡ/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π·Π°ΠΌΠ΅ΡΠΎΠ² ΠΎΡΠΎΡΠΌΠ»ΡΡΡΡΡ ΡΠΊΡΠΈΠ½ΡΠΎΡΠ°ΠΌΠΈ c ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ.
ΠΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΡΠ½ΠΊΡΠ° 1. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΡΠΎΡΠΌΠ»ΡΡΡΡΡ ΡΠΊΡΠΈΠ½ΡΠΎΡΠ°ΠΌΠΈ c ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡoΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (cProfile) Π²ΡΠ΅Ρ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° .print_stat()
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π΅Π΄ΠΈΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΎΠΉ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΌΠΌΠ°ΡΠ½ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΠ±Π°Π²ΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π² ΡΠ°ΠΉΠ» cache.log Π΄Π»Ρ LRUCache.
- ΠΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ "-s" Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡ Π² stdout Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
- ΠΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ "-f" Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΉ ΡΠΈΠ»ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΠΈΠΉ Π·Π°ΠΏΠΈΡΠΈ c ΡΠ΅ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΡΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΡΠ²ΠΎΠ΅.
- "-s" ΠΈ "-f" ΠΌΠΎΠ³ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ:
- get ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ°
- get ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ°
- set ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ°
- set ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ°, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ° ΡΠΌΠΊΠΎΡΡΡ
- set ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ°
- ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ debug Π·Π°ΠΏΠΈΡΠΈ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΊΡΡΠΎΠΌ (ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΡ Π²
if __name__ == "__main__"
).
1. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ json (Ρ ΠΏΠΎΠΌΠΎΡΡΡ C API)
- ΠΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ cjson, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π» Π±Ρ Ρ ΠΎΡΡ Π±Ρ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π°: loads ΠΈ dumps;
- ΠΠ΅ΡΠΎΠ΄Ρ loads Π½Π° Π²Ρ
ΠΎΠ΄ ΠΏΠΎΠ΄Π°ΡΡΡΡ ΡΡΡΠΎΠΊΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
- JSON-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΡΠΈΡΠ°ΠΉ ΠΊΠ°ΠΊ python-ΡΠ»ΠΎΠ²Π°ΡΡ);
- ΠΠ»ΡΡΡΠΌ Π² JSON Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ° Π² Π΄Π²ΠΎΠΉΠ½ΡΡ ΠΊΠ°Π²ΡΡΠΊΠ°Ρ ;
- ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΡΠΏΠ°ΡΡ Π»ΠΈΠ±ΠΎ ΡΠΈΡΠ»ΠΎ, Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΠ°. ΠΡΠ»ΠΈ Π·Π°Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ²;
- ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ JSON-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
- ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° dict.
- ΠΠ΅ΡΠΎΠ΄Ρ dumps Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° dict ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ Ρ loads ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ;
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ make ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΏΠΊΡ venv Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ;
- ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Ρ (Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ Π±Ρ setup.py install);
- ΠΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ΅Π»Ρ test, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΡΡΠΈΡ ΡΠ΅ΡΡΡ (ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΡΠ΅Π»ΠΈ test Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° make).
ΠΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² loads ΠΈ dumps Π½Π° ΡΠ·ΡΠΊΠ΅ Python, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΠΈ Π΄Π°ΠΌΠΏΠ° (Ρ ΠΏΠΎΠΌΠΎΡΡΡ unittest);
Π‘ΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ρ json ΠΈ ujson Π½Π° ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠ°Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ (ΠΊΠ°ΠΊ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ JSON, ΡΠ°ΠΊ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ JSON).
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅: Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ² Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 100 ΠΌΡ.