2016-04-06 24 views
1

Ich verwende den Decorator @lru_cache(maxsize=None) von functools, und ich möchte die Memo-Werte in einer Datei speichern, um zu vermeiden, sie jedes Mal neu zu berechnen, wenn ich den Code ausführe.Wie exportiert man lru_cache in Python?

Gibt es eine elegante Möglichkeit, dies anders zu tun, als Args und Werte in eine Datei zu drucken und sie dann zu lesen?

+1

'functools.lru_cache()' wurde entwickelt, um mit beliebigen Positions- und Schlüsselwortargumenten und möglicherweise einer maximalen Cachegröße zu arbeiten. Wenn Sie diese Funktionen nicht benötigen, ist es nicht allzu schwierig, einen eigenen Cache-Dekorator zu erstellen. Der Cache ist nur ein Dictionary. Sie können also eine Funktion zur Verfügung stellen, um sie als Pickle auf der Festplatte zu speichern (oder json, wenn Sie in der Lage sein möchten, sie zu betrachten) und sie später erneut laden. Der Quellcode von lru_cache ist auch [verfügbar] (https://hg.python.org/cpython/file/3.4/Lib/functools.py); Modifizieren Sie es nach Ihren Bedürfnissen. – RootTwo

+0

@RootTwo Können Sie diesen Kommentar als Antwort hinzufügen? Das ist in der Tat die Antwort, nach der ich gesucht habe. –

Antwort

0

@Carlos Pinzón, als Antwort wie gewünscht gestellt: functools.lru_cache() wurde entwickelt, um mit beliebigen Positions- und Schlüsselwortargumenten und möglicherweise einer maximalen Cachegröße zu arbeiten. Wenn Sie diese Funktionen nicht benötigen, ist es nicht allzu schwierig, einen eigenen Cache-Dekorator zu erstellen. Der Cache ist nur ein Dictionary. Sie können also eine Funktion zur Verfügung stellen, um sie als Pickle auf der Festplatte zu speichern (oder json, wenn Sie in der Lage sein möchten, sie zu betrachten) und sie später erneut laden. Der lru_cache-Quellcode ist ebenfalls verfügbar. Modifizieren Sie es nach Ihren Bedürfnissen.

0

Nein, ich denke, der einzige Weg, dies zu tun ist, Informationen für die .cache_info() - Funktion zu erhalten und in eine Datei zu schreiben.

Es wäre ein CacheInfo-Objekt, das Informationen enthält, die Sie benötigen.

+1

Das _CacheInfo-Objekt speichert nur die Cache-Statistiken: Treffer, Fehltreffer, maximale Größe und aktuelle Größe. Nichts, mit dem Sie den Cache speichern und wiederherstellen können. – RootTwo