Memorice funciones costosas
Almacene los resultados de las funciones según sus argumentos.
Memorice funciones costosas es una lección gratuita de Flask Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Flask Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Flask Academy incluye 4 lecciones en total.
Más allá de las vistas completas
A veces el problema es una sola función auxiliar lenta, no toda la página. La memoization almacena en caché el resultado de una función usando sus argumentos como clave.
El decorador memoize
Envuelva una función con @cache.memoize(). Los mismos argumentos devuelven el resultado almacenado en lugar de volver a calcularlo. 💡
@cache.memoize()
def heavy(n):
return slow_calc(n)Claves basadas en argumentos
Memoize construye la clave a partir de los arguments. heavy(2) y heavy(5) se almacenan por separado, y cada uno conserva su propia respuesta.
cached frente a memoize
Use cached para vistas cuyas claves son las URL, y memoize para funciones normales cuyas claves son sus entradas. Resuelven problemas de capas diferentes.
Establecer un tiempo de espera para memoize
Al igual que con las vistas, indique a memoize un timeout para que los resultados caduquen. Cuando transcurra, la siguiente llamada vuelve a calcular y almacenar el resultado.
@cache.memoize(timeout=120)
def rates():
...Perfecto para funciones puras
Memoize resulta ideal para funciones pure: la misma entrada siempre produce la misma salida y no hay efectos secundarios que se puedan perder.
Evitar almacenar efectos secundarios
No aplique memoize a una función que envíe correos electrónicos o escriba una fila. En un cache hit se omite el cuerpo, por lo que el efecto nunca se ejecuta.
Tenga cuidado con los métodos
En los métodos de instancia, la clave incluye self. Dos objetos se almacenan por separado, que normalmente es justo lo que necesita.
Eliminar un resultado memoizado
Puede expulsar una entrada individual con delete_memoized, pasando la función y los argumentos exactos que desea borrar.
cache.delete_memoized(rates)Borrar por argumento
Pase argumentos a delete_memoized para eliminar solo esa variante y dejar intactos todos los demás resultados almacenados.
cache.delete_memoized(heavy, 5)Medir antes de aplicar memoize
Aplique memoize solo a lo que realmente sea lento. Haga Profile primero, porque almacenar trabajo barato añade el coste de las claves con poca ganancia real.
Comprobación rápida
Aplica memoize a una función que también registra cada llamada en su base de datos.
Resumen: memoización
Puede aplicar memoize a funciones puras lentas, usar los argumentos como claves, establecer tiempos de espera y expulsar resultados con delete_memoized. 🎯
Preguntas frecuentes
¿La lección «Memorice funciones costosas» es gratis?
Sí — el texto completo de «Memorice funciones costosas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Flask Academy, actualiza a CoddyKit PRO. El curso de Flask Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Memorice funciones costosas»?
Almacene los resultados de las funciones según sus argumentos. Practicas Flask Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Flask Academy?
No se requiere experiencia previa. Flask Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Memorice funciones costosas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Flask Academy?
Sí. Cada lección de Flask Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Configure Flask-Caching
- Almacene en caché una vista con cached
- Memorice funciones costosas
- Invalide y caduque entradas de caché