ΠΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ β Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ Π‘Π°Π½ΡΡΡΠ³ΠΎ ΠΠ°Π»Π΄Π°ΡΡΠ°ΠΌΠ° Caching in Python Using the LRU Cache Strategy. ΠΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π²ΠΈΠ΄Π΅ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ° Jupyter.
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ. Π ΠΌΠΎΠ΄ΡΠ»Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Python functools
ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @lru_cache
, Π΄Π°ΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Least Recently Used (LRU, Β«Π²ΡΡΠ΅ΡΠ½Π΅Π½ΠΈΠ΅ Π΄Π°Π²Π½ΠΎ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Β»). ΠΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ:
- ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ²;
- ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ LRU ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄;
- ΠΊΠ°ΠΊ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°
@lru_cache
; - ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°
@lru_cache
ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Python: Π² ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·Π°
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅, ΡΠ΅ΠΌ Π² ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π°Π³ΡΠ΅Π³ΠΈΡΡΠ΅Ρ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΡΠ°ΡΡΠΈ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅.
ΠΠ°ΠΊ ΠΏΠΎΡΡΡΠΏΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠ΅ΡΠΈΡ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΏΠ°ΡΡ ΡΡΠ°ΡΠ΅ΠΉ ΠΈ ΡΡΠ°Π½Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ? ΠΠ΅Π· ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎ ΡΡΠ°ΡΡΡΠΌΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ°.
ΠΡΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ Π±ΡΠ»ΠΎ Π±Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π· ΠΎΡΠΊΡΠΎΠ΅Ρ ΡΡΠ°ΡΡΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈΠ· ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°Π½ΠΎΠ²ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΈΠ· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. Π ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ΅ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Python ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ»ΠΎΠ²Π°ΡΡ
Π Python ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, Π΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π² ΠΊΡΡΠ΅, ΠΈ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π½Π΅Ρ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ URL ΡΡΠ°ΡΡΠΈ, Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ β Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° requests
:
Π₯ΠΎΡΡ Π²ΡΠ·ΠΎΠ² get_article()
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ, ΡΡΠ°ΡΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. ΠΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π΅Π΅ URL ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΡΠ»ΠΎΠ²Π°ΡΡ cache
. ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π· ΠΊΠΎΠ΄ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°.
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π ΡΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΊΡΠ°Π»Π°ΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎ ΡΠ°ΡΡΠΈ: ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ°ΡΠ΅ΠΉ ΠΎΡΠΊΡΡΠ» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΌΠ΅ΡΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ.
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ°ΡΡΠΈ ΠΏΠΎΡΠ° ΡΠ΄Π°Π»ΠΈΡΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· ΠΊΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΡΡΡ ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅.
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ | ΠΠ°ΠΊΡΡ Π·Π°ΠΏΠΈΡΡ ΡΠ΄Π°Π»ΡΠ΅ΠΌ | ΠΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠ°ΡΠ΅ Π΄ΡΡΠ³ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ |
First-In/First-Out (FIFO) | Π‘Π°ΠΌΠ°Ρ ΡΡΠ°ΡΠ°Ρ | ΠΠΎΠ²ΡΠ΅ |
Last-In/First-Out (LIFO) | Π‘Π°ΠΌΠ°Ρ Π½Π΅Π΄Π°Π²Π½ΡΡ | Π‘ΡΠ°ΡΡΠ΅ |
Least Recently Used (LRU) | ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π°Π²Π½ΠΎ | ΠΠ΅Π΄Π°Π²Π½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΡΠ΅ |
Most Recently Used (MRU) | ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ | ΠΡΠΎΡΠΈΡΠ°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ |
Least Frequently Used (LFU) | ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΅Π΄ΠΊΠΎ | ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ°ΡΡΠΎ |
ΠΠΎΠ³ΡΡΠΆΠ°Π΅ΠΌΡΡ Π² ΠΈΠ΄Π΅Ρ LRU-ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ LRU, ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ Π·Π°ΠΏΠΈΡΠΈ, Π°Π»Π³ΠΎΡΠΈΡΠΌ LRU ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π΅Π΅ Π² Π²Π΅ΡΡ Π½ΡΡ ΡΠ°ΡΡΡ ΠΊΡΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π°ΠΏΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ, ΠΏΡΠΎΠ²Π΅ΡΠΈΠ² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ°.
ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΈΡΡΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΡΠ° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΡΠΎΡΠΈΠ» ΡΡΠ°ΡΡΡ ΠΈΠ· ΡΠ΅ΡΠΈ.
Π‘ΡΠ°ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΠΎΡΠ΅ ΠΊΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΈΡΡΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ°ΡΡΡ.
ΠΡΠΎΡΠ°Ρ ΡΡΠ°ΡΡΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»ΠΎΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠ°ΡΡΡ Π²Π½ΠΈΠ· ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ.
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ LRU ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ: ΡΠ΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΊΡΡΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ°Π³Π»ΡΠ΄ΡΠ²Π°Π΅ΠΌ Π·Π° ΠΊΡΠ»ΠΈΡΡ ΠΊΡΡΠ° LRU
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΡΡ LRU Π² Python β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π΄Π²ΡΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΈ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π²ΡΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΡ, Π° Ρ Π²ΠΎΡΡΠΎΠ²ΠΎΠΉ β Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΡΡΡΡ.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΡΠ° LRU.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ, ΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΊΡΡΠ΅, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π² Π΄Π²ΡΡΠ²ΡΠ·Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠ΅ΠΌΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΡΠ° β ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π·Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ (ΡΠΎ Π΅ΡΡΡ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° π(1).
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.2, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ LRU Python Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @lru_cache
.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ @lru_cache Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΡΠ° LRU Π² Python
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @lru_cache
Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ ΠΊΠ»ΡΡΠΎΠΌ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ. Π’ΠΎ Π΅ΡΡΡ ΡΡΠΎΠ±Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π», Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Ρ
Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΌΠΈ.
ΠΠ°Π³Π»ΡΠ΄Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°: ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ³ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΡΠ»ΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΡΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ Π½Π° Π»Π΅ΡΡΠ½ΠΈΡΠ΅. Π‘ΠΊΠΎΠ»ΡΠΊΠΎ Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΡΡΠΏΠΈΡΡ-ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ³Π½ΡΡΡ 1, 2, 3 (Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅) ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ? ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.
ΠΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΈΠ· ΡΠΈΡΡΠ½ΠΊΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΡΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΠ»Π° ΡΡΡΠΏΠ΅Π½Π΅ΠΊ, ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π½Π½ΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡΡΠΆΠΎΠΊ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ ΡΠ°Π²Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΠΈΡΠ»Ρ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ ΡΡΠ΅ΡΡΠ΅ΠΉ, Π²ΡΠΎΡΠΎΠΉ ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΏΠ΅Π½Π΅ΠΊ:
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π»ΠΎΠΆΠΈΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ. Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΡΠΈ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΡΡΡΠΏΠ΅Π½ΡΠΊΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ»ΠΎΠΆΠΈΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π° Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ, Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π²ΡΠΎΡΠΎΠΉ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ. Π’ΠΎ Π΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ ΠΌΡ Π΅Π³ΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π²ΠΈΠ΄ΠΈΠΌ:
ΠΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ 4 ΡΡΡΠΏΠ΅Π½Π΅ΠΊ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π΄Π»Ρ Π»Π΅ΡΡΠ½ΠΈΡΡ ΠΈΠ· 30 ΡΡΡΠΏΠ΅Π½Π΅ΠΊ.
ΠΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ²ΡΡΠ΅ 53 ΠΌΠ»Π½. ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΠΊΠ°Π»ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΈΠ΄ΡΠ°ΡΠΎΠΉ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ, ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΌΠΎΠ³ Π΄Π»ΠΈΡΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ.
ΠΠ°ΡΠ΅ΠΊΠ°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΠ·ΠΌΠ΅ΡΠΈΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ Π΄Π»ΠΈΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Python timeit
ΠΈΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ Jupyter.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. Π ΠΌΠΎΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ°ΡΡΠ΅Ρ Π·Π°Π½ΡΠ» 3 ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΡΠΈΠ΄ΡΠ°ΡΠΈ ΡΡΡΠΏΠ΅Π½Π΅ΠΊ. ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ c ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ°ΡΠ° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ°Π·Π±ΠΈΠ²Π°Ρ Π΅Π΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΡΠ°Π³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°. ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΈΡΡΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π΅ΡΠ΅Π²ΠΎ Π΄Π»Ρ ΡΠ΅ΠΌΠΈ ΡΡΡΠΏΠ΅Π½Π΅ΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² steps_to()
:
ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ steps_to()
Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, steps_to(5)
Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π΄Π²Π° ΡΠ°Π·Π°, steps_to(4)
β ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π·Π°, steps_to(3)
β ΡΠ΅ΠΌΡ ΡΠ°Π· ΠΈ Ρ. Π΄. ΠΡΠ·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ β ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅.
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°ΡΠΈΡ: ΠΌΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΠΎΠ΄Π½ΠΈΡ
ΠΈ ΡΠ΅Ρ
ΠΆΠ΅ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅. ΠΡΠ΅ΠΊΡΠ°ΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @lru_cache
!
ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ functools
ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
@lru_cache
Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ. Π Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ: @lru_cache()
.ΠΡ Π΅Π΄ΠΈΠ½ΠΈΡ ΡΠ΅ΠΊΡΠ½Π΄ ΠΊ Π΄Π΅ΡΡΡΠΊΠ°ΠΌ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄ β ΠΏΠΎΡΡΡΡΠ°ΡΡΠ΅Π΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΠ΅ ΡΠ΅ΠΌ, ΡΡΠΎ Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @lru_cache
ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ·ΠΎΠ²Π° steps_to()
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ @lru_cache
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @lru_cache
, ΠΌΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΈ ΠΎΡΠ²Π΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ½ΠΎΠ²Π°. ΠΠΎ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΡ
ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΡΡΡΠΊΠ½Π΅Ρ ΠΏΠ°ΠΌΡΡΡ?
Π£ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @lru_cache
Π΅ΡΡΡ Π°ΡΡΠΈΠ±ΡΡ maxsize
, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΡΡ Π½Π°ΡΠ½Π΅Ρ ΡΠ΄Π°Π»ΡΡΡ ΡΡΠ°ΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ maxsize
ΡΠ°Π²Π΅Π½ 128. ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ maxsize
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ None
, ΡΠΎ ΠΊΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈ Π±Π΅Π· Π²ΡΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΡΠ°Π½ΠΈΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ².
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌ @lru_cache
Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΠ° maxsize
ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° cache_info()
:
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ cache_info()
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΡΡ, ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ Π±Π°Π»Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΡΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ:
hits=52
β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅@lru_cache
Π²Π΅ΡΠ½ΡΠ» Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π² ΠΊΡΡΠ΅;misses=30
β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π·ΡΡΡ Π½Π΅ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ, Π° Π±ΡΠ»ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½Ρ (Π² ΡΠ»ΡΡΠ°Π΅ Π½Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ Π½ΠΎΠ²Π°Ρ ΡΡΡΠΏΠ΅Π½Ρ);maxsize=16
β ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅Π³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ;currsize=16
β ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΡΡΠ°, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΊΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΡΡΠ°
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΎΡ ΡΡΠ΅Π±Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎΠΌΡ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠ΅ Real Python Π½ΠΎΠ²ΡΡ
ΡΡΠ°ΡΠ΅ΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡΠ»ΠΎΠ²ΠΎ python
β Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΡΡΠ°ΡΡΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΌ (ΡΠΈΡΠ»ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²).
Real Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Atom, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ feedparser
Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠ°Π½Π°Π»Π° ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ requests
Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈ, ΠΊΠ°ΠΊ ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΈ ΡΠ°Π½ΡΡΠ΅.
Π‘ΠΊΡΠΈΠΏΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ, ΠΏΠΎΠΊΠ° ΠΌΡ Π½Π΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π΅Π³ΠΎ, Π½Π°ΠΆΠ°Π² [Ctrl + C]
Π² ΠΎΠΊΠ½Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° (ΠΈΠ»ΠΈ Π½Π΅ ΠΏΡΠ΅ΡΠ²Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Jupyter-Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅).
ΠΠΎΠ΄ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ xml-ΡΠ°ΠΉΠ» ΠΈΠ· RealPython. ΠΠ°Π»Π΅Π΅ ΡΠΈΠΊΠ» ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠΏΠΈΡΠΊΠ΅. ΠΡΠ»ΠΈ ΡΠ»ΠΎΠ²ΠΎ python
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ Π΄Π»ΠΈΠ½Ρ ΡΡΠ°ΡΡΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΊΠΎΠ΄ Β«Π·Π°ΡΡΠΏΠ°Π΅ΡΒ» Π½Π° 5 ΡΠ΅ΠΊΡΠ½Π΄, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²Π½ΠΎΠ²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΡΠ°ΡΡΡ, Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°...Β». ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ ΡΠΊΡΠΈΠΏΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ, ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΡΠ»ΠΊΠΈ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @lru_cache
, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ. ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΡΠ°ΡΡΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΠΎΡ
ΡΠ°Π½ΠΈΡ Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΡΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΎΠ± ΡΡΠΎΠΌ Π½Π΅ ΡΠ·Π½Π°Π΅Ρ. Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΎΠΊ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΊΡΡΠ΅.
ΠΡΠΈΡΠ΅ΡΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈΠ· ΠΊΡΡΠ°
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΈΠ΄Π΅Ρ Π² Π½ΠΎΠ²ΠΎΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ @lru_cache
. ΠΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° Π·Π°ΠΏΡΠΎΡ ΡΠΎΠ»ΡΠΊΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠΎΠΊ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π΅ΡΠ΅ Π½Π΅ ΠΈΡΡΠ΅ΠΊ β Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π±ΠΈΡΠ°ΡΡΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°:
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @timed_lru_cache
ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΊΡΡΠ΅ (Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
) ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΊΡΡΠ°.
ΠΠΎΠ΄ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠΌ @lru_cache
. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΅ΡΠ΅Π΄ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΡΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½Π΅ Π½Π°ΡΡΡΠΏΠΈΠ»Π° Π»ΠΈ Π΄Π°ΡΠ° ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΊΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΎΡΠΈΡΠ°Π΅Ρ ΠΊΡΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΈ ΡΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π½Π° ΠΊΡΡ Π² ΡΠ΅Π»ΠΎΠΌ, Π° Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ.
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @timed_lru_cache
Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ monitor()
, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅. Π‘ΠΎΠ±ΡΠ°Π² ΠΊΠΎΠ΄ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ...Β» ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΡΠ°ΡΡΡΠΌ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΊΠΎΡΠΎΡΡΠΈ cΠ΅ΡΠΈ, ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΡΡΠ°ΡΡΠΈ ΠΈΠ· ΠΊΡΡΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° ΠΎΠ±ΡΠ°ΡΠΈΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠ°ΡΡΡΠΌ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 5 ΡΠ΅ΠΊΡΠ½Π΄, Π° ΡΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΡΡΠ° ΠΈΡΡΠ΅ΠΊΠ°Π΅Ρ ΡΠ°Π· Π² ΠΌΠΈΠ½ΡΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΠ²ΡΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π½Π° ΠΏΡΡΠΈ ΠΊ Π΅Π³ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΌΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄.
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ:
- ΠΊΠ°ΠΊΠΈΠ΅ Π±ΡΠ²Π°ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ;
- ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ LRU-ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Python;
- ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ
@lru_cache
; - ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΡΡΡΠΎ ΡΠ΅ΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π²Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° cachetools, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ, ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΠΈΠ΅ ΡΠ°ΠΌΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ