Lru_cache, una herramienta de biblioteca estándar proporcionada por Python, se puede utilizar para lograr esto. Un decorador llamado lru_cache () utiliza el enfoque de memorización para acortar el tiempo que se ejecuta una función para las mismas entradas.
Para examinar la eficacia del caché y optimizar el argumento MaxSize, el método envuelto ofrece el método Cache_info () que crea una tupla etiquetada que comprende éxitos, fallas, maxSize y cursize. Debido a que lru_cache predeterminado se almacena en caché cada llamada al método que encapsula, el caché puede continuar expandiéndose indefinidamente mientras se ejecuta un programa.
Probablemente no necesite preocuparse de que el caché se vuelva demasiado grande si el rango de argumentos que acepta su función es limitado (por ejemplo, los únicos números 1 a 100). Para evitar el uso de toda la memoria, es posible que desee limitar el caché en algunas circunstancias a las posibilidades X máximas.
El "LRU" en LRU_CACHE se origina desde aquí. LRU o menos utilizado con frecuencia es un término utilizado para describir cómo se eliminan instantáneamente los objetos en el caché. Todos los datos se eliminan y guardan para los elementos de caché X más recientes.
Sintaxis del LRU_CACHE en Python
Una de esas funciones del módulo FunccTools que ayuda a disminuir el tiempo de ejecución de la función aplicando la técnica de memorización es LRU_CACHE (). La siguiente es la sintaxis del lru_cache proporcionado por Python:
@lru_cache (maxsize = 128, tipEd = false)
El decorador @lru_cache toma dos parámetros:
MAX_SIZE: la capacidad de almacenamiento máxima del caché se indica con esta opción después de lo cual se eliminan los elementos más antiguos. Cuando se establece en cero, nunca se eliminarán datos del caché, lo que hace que crezca eternamente. Si se almacenan en caché muchos datos, esto dará como resultado problemas.
Tipos: este argumento es booleano. Tener diferentes entradas en el caché para varios tipos de parámetros de función se indica cuando el valor se establece en verdadero.
Ejemplo 1: programa para imprimir la serie Fibonacci
Como su nombre lo indica, el caché mantiene el par de entradas/resultados más actuales al eliminar primero los registros menos recientes/más antiguos. Con la ayuda del caché LRU, imprimiremos la secuencia de Fibonacci. Por ejemplo, la serie Simple Fibonacci es 1, 1, 2, 3, 5, 8, etc. Desde 1+1 = 2, 1+2 = 3, y así sucesivamente. Comparemos las veces que toma la función mientras usa el LRU_CACHE y cuando no se usa usando el tiempo.
Desde Functools import lru_cacheAquí, del módulo de Functools de Python, importamos el LRU_CACHE. El tiempo también se importa en este script para la ejecución del tiempo. Luego, tenemos una definición de función que ha dado el nombre "fib_without_cache". La función se creó para calcular la serie Fibonacci sin el LRU_CACHE. Dentro de la función con la condición if, calculamos la serie Fibonacci aplicando su fórmula.
Después de eso, creamos un objeto "comenzar" donde se invoca la función de tiempo. El tiempo en segundos se pasa a la función "fib_without_cache". Con el objeto final, terminamos la ejecución del tiempo. La serie Fibonacci se imprime sin el comando lru_cache por el comando de impresión. La serie Fibonacci se implementó sin la función LRU_CACHE, como demostramos.
Ahora, implementamos la función lru_cache. Establecemos el valor de entrada max_size en la función lru_cache. Usando el decorador lru_cache, envolvemos la función "fib_with_cache". La serie Fibonacci se puede determinar muy rápidamente haciendo esto. La serie Fibonacci se evalúa aplicando su fórmula. La ejecución del tiempo comienza con el objeto inicial y termina con el objeto final. Por último, imprimimos el resultado que se forma con el decorador LRU_CACHE.
Puede ver la salida de la serie Fibonacci con y sin el decorador de caché LRU de la siguiente manera:
Ejemplo 2: programa para contar la vocal desde la cadena
Cuentamos el número de vocales que tiene la cadena proporcionada utilizando el decorador LRU_CACHE.
Desde Functools import lru_cachePrimero, incluimos el lru_cache en nuestro script y luego usamos el decorador lru_cache. Dentro del decorador LRU_CACHE, pasamos el MaxSize como argumento y establecimos su valor en 50. Luego, creamos una función con el nombre "Count_Vowels" que toma la variable "cadena" como una entrada. Establecemos el método de caseflet en la variable de cadena. El método de Casefold aquí convierte los caracteres en minúsculas que se dan en la cadena.
Luego, tenemos el comando de retorno que da la suma de las vocales que se encuentran en la cadena. A la instrucción de impresión, especificamos la cadena "Hola Geeks".
El siguiente es un valor entero obtenido que es la suma de la vocal que se encuentra en la cadena:
Conclusión
Cubrimos el lru_cache en python con su sintaxis y ejemplos. La salida y los parámetros se guardan cuando se llama a una función encerrada en el lru_cache. Luego se llama a la función nuevamente, y si se encuentra la misma entrada, la salida de la llamada anterior se devuelve sin realizar ningún cálculo.