[PYTHON] Cela peut être réalisé en 1 minute! Le décorateur qui met en cache l'exécution de la fonction entraîne Memcached

Cela seul peut mettre en cache la valeur de retour dans Memcached


@cached(time=1200)
def functionToCache(arguments):
  return arguments

Quand est-ce pratique?

Surtout, je trouve cela pratique lors du développement avec du scraping ou des données externes.

Comment utiliser

  1. Faites pip install python-memcached
  2. Enregistrez le fichier python suivant dans un endroit approprié et importez la fonction mise en cache.
  3. Décorez dans un format comme @cached (time = 1000) lors de la définition d'une fonction

Fragment

memcached-decorater.py


def decorator_with_args(decorator_to_enhance):
  """ 
Une fonction qui donne un argument à un décorateur et le renvoie
  """
  def decorator_maker(*args, **kwargs) :
    def decorator_wrapper(func) :
      return decorator_to_enhance(func, *args, **kwargs)
    return decorator_wrapper
  return decorator_maker

@decorator_with_args
def cached(func, *args, **kwargs):
  """
Décorateur qui met en cache le résultat en utilisant le nom et l'argument de la fonction comme clés
Comment utiliser
    @cached(time=1200)
    def functionToCache(arguments):
  """
  def wrapper(*pars):
    key = func.__name__ + '_' + '_'.join([str(par) for par in pars])
    print key
    client = memcache.Client(['127.0.0.1:11211'])
    val = client.get(key)
    if not val:
      val = func(*pars)
      try:
        client.set(key, val, time=kwargs['time'])
      except:
        pass #S'il vous plaît
    return val
  return wrapper


référence

gae-memcache-decorator.py https://gist.github.com/abahgat/1395810

Recommended Posts

Cela peut être réalisé en 1 minute! Le décorateur qui met en cache l'exécution de la fonction entraîne Memcached
Nombre maximum de paramètres de fonction pouvant être définis dans chaque langue
Fonctions pouvant être utilisées dans l'instruction for
Construire un Sphinx qui peut être écrit avec Markdown
Analyse morphologique et tfidf (avec code de test) pouvant être effectuée en 1 minute environ
Algorithmes de base utilisables par les pros de la compétition
Enregistrement d'image ANT qui peut être utilisé en 5 minutes
Il semble que le suivi des squelettes puisse être effectué avec RealSense
Analyse de texte pouvant être effectuée en 5 minutes [Word Cloud]
Goroutine utilisable sur le terrain (édition errgroup.Group)
Scripts pouvant être utilisés lors de l'utilisation de Bottle en Python
Index d'évaluation pouvant être spécifié pour GridSearchCV de sklearn
Je l'ai fait parce que je veux des données JSON qui peuvent être utilisées librement dans les démos et les prototypes
Cela peut-il être fait en 1 minute? Aucune installation requise, exemple de test Google pour le langage C pour Linux
・ <Slack> Ecrire une fonction pour notifier Slack afin qu'elle puisse être citée à tout moment (Python)