percacha

Personistently cache resultados de chamas
Baixe Agora

percacha Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • MIT/X Consortium Lic...
  • Preço:
  • FREE
  • Nome do editor:
  • Oben Sonne
  • Site do editor:
  • http://bitbucket.org/obensonne/

percacha Tag


percacha Descrição

Resultados de cache persistentemente de chamas A percacha é uma biblioteca Python para criar persistentemente os resultados de funções (ou chamas em geral) usando decoradores. É de alguma forma semelhante ao exemplo de memoe da biblioteca de decorador Python, mas com a vantagem de que os resultados são armazenados persistentemente em um arquivo de cache. Percache fornece memoização em várias invocações do intérprete Python.Exemplo: >>> Importação de Importação >>> cache = percache.cache ("/ tmp / my-cache") >>>>>> @ cache.check ... def LongTask (A, B): ... Imprimir ("Executando uma longa tarefa") ... Retornar A + B ... >>> LongTask (1, 2) Executando uma longa tarefa3 >>>>> longtask ( 1, 2) 3 >>> cache.close () # escreve novos resultados em cache para diskas você pode ver na saída ausente após a segunda invocação, LongTask foi chamado apenas uma vez. A segunda vez o resultado é recuperado do cache. O recurso chave deste módulo é que isso funciona em várias invocações do intérprete Python.A Requerimento sobre os resultados para o cache é que eles são colible.Acream o arquivo de cache pode ser usado para qualquer número de detalhes de chamas diferentes de diferentes chamadas (você deve know) quando cache o resultado de um calable, um hash SHA1 com base no nome e argumentos da chamada é usado como uma chave para armazenar o resultado no arquivo de cache. O cálculo de hash não funciona diretamente com os argumentos, mas com suas rerpresentations, ou seja, a corda retornada aplicando reprer (). As representações de argumentos devem diferenciar os valores suficientemente para fins da função, mas identicamente em várias invocações do intérprete Python. Por padrão, a função interna repre () é usada para obter representações de argumentos. Isto é apenas perfeito para tipos básicos, listas, torres e combinações deles, mas pode falhar em outros tipos: >>> reprer (42) 42 # bom >>> reprer () "" # Bom >>> O = objeto () >>> reprer (O) '' # ruim (endereço é dinâmico) >>> reprer ({"A": 1 "," B ": 2," D ": 4," c ": 3})" {'A': 1, 'C': 3, 'B': 2 'd ': 4} "# ruim (ordem pode mudar) >>> classe A (objeto): ... def __init __ (auto, A): ... self.a = a ... >>> reprer (A 36)) '' # ruim (não considerado) >>> reprer (a (35)) '' # ruim (não considerado) uma representação ruim é uma que não é identicamente através de invocações de python (todos os exemplos ruins) ou um que não diferencie os valores suficientemente (últimos 2 más exemplos). Para usar esses tipos de qualquer maneira você pode 1. Implemente o método __repr __ () do tipo de acordo ou 2. Forneça uma função de representação personalizada usando a palavra-chave Reproduzir do construtor de cache. __repr __ () método para passar dicionários para percace funções decoradas, você poderia envolvê-los em um tipo de dicionário próprio com um __r adequado EPR __ () Método: >>> MyDict de classe (dict): ... def __repr __ (auto): ... itens = ) para k em classificado ( auto)] ... retorne "{% s}"% "," .Join (itens) ... >>> reprer (MyDict ({"A": 1, "B": 2, "D": 4 , "C": 3}) "{'A': 1, 'B': 2, 'C': 3 ',' D ': 4}" # Bom (sempre mesmo pedido) Fornece uma função Custom Repr () Exemplo a seguir mostra como usar uma função de representação personalizada para obter uma representação de argumento adequado de objetos de arquivo: >>> def myrepr (arg): ... se IsIminstance (arg, arquivo): ... # retornar uma string com nome de arquivo e tempo de modificação ... retornam "% s:% s"% (arg.name, OS.fstat (arg.fileno ()) ) ... mais: ... Return Repr (Arg) ... >>> cache = percache.cache ("/ Algum / Path", reprer = MyREPR) Arruma * Não se esqueça de chamar o método fechar () de uma instância de cache. Nenhum resutls é gravado no disco até que este método seja chamado * Certifique-se de excluir o arquivo de cache sempre que o comportamento de uma função armazenada em cache foi alterado! * Para impedir que o cache seja maior e maior, você pode ligar para o método Limpar () de uma instância de cache. Por padrão, limpa todos os resultados do cache. A palavra-chave Maxage Meu ser usado para especificar um número máximo de segundos passados, já que um resultado em cache foi usado pela última vez. Qualquer resultado não usado (escrito ou acessado) para segundos Maxage é removido do cache. Requisitos: · Pitão O que há de novo nesta versão: · Corrigir a saída de idade de uso errado da interface de linha de comando. · Conheça a meio caminho com pilint.


percacha Software Relacionado