π§Ή ΠΠ°ΠΊ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΡΡ Π² Python: ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ Π»ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ π
from django.core.cache import cache
# ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ°
cache.clear()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ `cache` ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ `django.core`. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ `clear()` Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΊΡΡΠ°.
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° `django.core`, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΡΡ Π² Python!
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΡΡ Π² Python
ΠΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Python Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΡΠΈΡΡΠΊΠΈ ΠΊΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
1. ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° ΠΈΠΌΠΏΠΎΡΡΠΎΠ²
ΠΠΎΠ³Π΄Π° Π² Python ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΎΠ½ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ importlib.reload()
.
import importlib
# ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ
import my_module
# ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠ΄ΡΠ»Ρ
# ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ
importlib.reload(my_module)
Π€ΡΠ½ΠΊΡΠΈΡ reload()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π΅Π³ΠΎ. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π²Π½ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΡ
ΡΡΡΠ΅ΠΊΡ.
2. ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
Π Python ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ
ΡΠ°Π½ΠΈΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΈΡ
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ Π²Π½ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° Π΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠΎΡ ΠΊΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @functools.lru_cache
.
import functools
@functools.lru_cache(maxsize=None)
def my_function():
# ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ
pass
# ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ
# ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π°
my_function.cache_clear()
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @functools.lru_cache
ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΡΡ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΈ ΡΡΠ½ΠΊΡΠΈΡ cache_clear()
ΠΎΡΠΈΡΠ°Π΅Ρ ΡΡΠΎΡ ΠΊΡΡ, ΡΡΠΎΠ±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΈΠ²Π΅Π» ΠΊ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π½ΠΎΠ²ΠΎ.
3. ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
Π Python ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ
ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΌΠΎΠ΄ΡΠ»ΡΡ
. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΊΡΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ del
.
import sys
# Π£Π΄Π°Π»ΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· ΠΊΡΡΠ°
del sys.modules['my_module']
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ del
ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎ ΠΊΠ»ΡΡΡ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ sys.modules
, ΠΊΠΎΡΠΎΡΡΠΉ Ρ
ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΌΠΎΠ΄ΡΠ»ΡΡ
.
4. ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΡΡ Π²ΡΠ΅Ρ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ importlib.invalidate_caches()
.
import importlib
# ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°
importlib.invalidate_caches()
Π€ΡΠ½ΠΊΡΠΈΡ invalidate_caches()
ΠΎΡΠΈΡΠ°Π΅Ρ ΠΊΡΡ Π²ΡΠ΅Ρ
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
5. ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΡΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΡ Π² Π½ΠΈΡ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ:
- ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° Π±ΡΠ°ΡΠ·Π΅ΡΠ°
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΠΊΠΎΠ³Π½ΠΈΡΠΎ-ΡΠ΅ΠΆΠΈΠΌΠ° Π±ΡΠ°ΡΠ·Π΅ΡΠ°
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π·Π°ΠΏΡΠΎΡΠ° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠ±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° Π² Python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΊΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΈ Π²ΡΠ±ΠΎΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅.