[Python] Accélération du traitement à l'aide des outils de cache

Aperçu

--cachetools est une bibliothèque de collection qui résume le traitement à grande vitesse (mémorisation) à l'aide du cache.

résultat

――Comme le montrent les deux images de comparaison suivantes, il est possible d'accélérer facilement les traitements lourds avec un peu de description.

image.png

image.png

environnement

Installation

--Installez la bibliothèque cachetools avec la commande suivante.

pip install cachetools

Exemple de description

** * Étant donné que ce contenu traite du contour, de l'image du résultat et de la description de base, reportez-vous au Document pour plus de détails. ** **

De base

#Charger la bibliothèque
from cachetools import cached

#Activation du cache
@cached(cache ={})
def fibonacci(n):
  if n <= 2:
    return 1
  else:
    return fibonacci(n - 2) + fibonacci(n - 1)

print(fibonacci(30))

Chaque option

Nom Contenu
TTLCache Spécifiez la durée de vie du cache.
Aucun accès à tout ce qui dépasse la durée de vie.
Jetez d'abord les éléments les moins utilisés.
LFUCache Fréquence minimale d'utilisation. Mesurez la fréquence d'acquisition de l'élément et jetez celui qui n'est pas utilisé le plus souvent
LRUCache Fréquence inutilisée maximale. Jeter du moins utilisé
RRCache Aléatoire. Sélectionnez au hasard des éléments et jetez-les à partir de là

--Ce qui suit est un exemple de description

#Charger la bibliothèque
from cachetools import cached, LFUCache, TTLCache, RRCache

@cached(cache=LFUCache(maxsize=10))  #Nombre maximum d'exploitations
def get_all_item:
  #En traitement

@cached(cache=TTLCache(maxsize=10, ttl=300))  #Rétention et durée de vie maximales
def get_user_item:
  #En traitement

@cached(cache=RRCache(maxsize=10, choice=min))  #Fonction alternative qui renvoie le nombre maximum de fonds et tout élément
def get_random:
  #En traitement. cache.Fonction spécifiée par choix(min)Peut être appelé.

référence

Recommended Posts

[Python] Accélération du traitement à l'aide des outils de cache
Concernant l'accélération de python (Note)
Utilisation du mode Python dans le traitement
Traitement d'exécution périodique lors de l'utilisation de tkinter [Python3]
[Python] Temps de traitement de la multiplication de la matrice avec NumPy
Configuration de l'authentification de base à l'aide de Python @Lambda
[Python] Divers traitements de données utilisant le tableau Numpy
Configuration de l'authentification Digest à l'aide de Python @Lambda
traitement d'image python
Accélération du calcul numérique avec NumPy / SciPy: Application 2
Commencez à utiliser Python
Traitement de fichiers Python
[Competition Pro] Accélération du DP en utilisant la somme cumulée
Accélération du calcul numérique avec NumPy / SciPy: Application 1
Scraping à l'aide de Python
Comment configurer un environnement Python à l'aide de pyenv
Traiter les données csv avec python (traitement du comptage à l'aide de pandas)
Remarques sur l'accélération du code Python avec Numba
Chargement / affichage et accélération de gif avec python [OpenCV]
Traitement distribué Python Spartan
Manipuler Redmine à l'aide de Python Redmine
Traitement de fichiers en Python
Python: traitement du langage naturel
Traitement de la communication par Python
Séquence de Fibonacci utilisant Python
Traitement multithread en python
Traitement de type dictionnaire à l'aide d'éléments ()
Premier traitement d'image Python
Divers outils de visualisation Python
Nettoyage des données à l'aide de Python
Traitement de texte avec Python
Traitement des requêtes en Python
Refactoring des outils utilisables avec Python
Utilisation des packages Python #external
Câblage Communication Pi-SPI avec Python
Calcul de l'âge à l'aide de python
Traitement d'image avec Python
Rechercher sur Twitter avec Python
Identification de nom à l'aide de python
Notes sur l'utilisation de sous-processus Python
Essayez d'utiliser Tweepy [Python2.7]
Illustration de traitement de chaîne Python
Divers traitements de Python
Accélération du calcul numérique avec NumPy / SciPy: ramasser les oreilles tombées
Traitement asynchrone avec LINE BOT: RQ (Redis Queue) en Python