Dies ist eine Aufgabe, für die ich ein Diktat hätte verwenden können, wenn ich nicht viel mehr Daten gespeichert hätte, als in meine 4 GB RAM passen. Ich mache auch andere speicherintensive Dinge im selben Programm. Je niedriger die Mem-Anforderungen, desto besser.
Ich möchte einfach
Speichern Sie viele Zeichenfolgen
Überprüfen Sie, ob eine Zeichenfolge in der Sammlung enthalten ist oder nicht
Gibt es eine Python-Methode, um dies zu tun? Ich benutze 3.3, also sind Berkelydbs raus.
Es muss auch genaue Antworten geben, also keine Bloom-Filter.
4 Antworten
Wenn die Daten nicht in Ihren Speicher passen, haben Sie keine Wahl. Sie müssen einige dieser Daten vorübergehend in einem externen Speicher (Ihrer Festplatte) speichern. Wie Sie richtig erraten haben, ist der Dateizugriff teuer und langsam, daher müssen die Festplattenvorgänge auf ein Minimum beschränkt werden.
Da Sie anscheinend einen Schlüsselwertspeicher benötigen (wie Sie ein Diktat haben), ist es eine gute Idee, diesen so aufzuteilen, dass sich verwandte Daten an einer ähnlichen Stelle befinden, die Sie dann schnell lesen können -weise in den Speicher für Berechnungen.
Aber wie das geht, hängt ganz davon ab, was Sie tatsächlich tun. Ohne weitere Informationen können wir Ihnen dort nicht wirklich helfen.
Übrigens. Wie Sie bereits in Berkeley DB erwähnt haben, gibt es für Python 3.2 tatsächlich Bindungen, und das würde ich nicht tun überrascht, ob sie auch an Python 3.3 gearbeitet haben. Andernfalls ist 3.3 noch ziemlich neu, sodass möglicherweise ein Update kommt. Wenn Sie nach einer alternativen Schlüsselwertspeicherdatenbank suchen, probieren Sie möglicherweise redis aus. Ich habe die Python-Bindungen jedoch nicht ausprobiert.
Nun, wenn Sie es nur speichern müssen, warum sollten Sie es im Speicher behalten, verwenden Sie eine Art Datenbank.
Verwenden Sie sqlite3, um Ihren Anforderungen gerecht zu werden
Wenn Sie dringend eine schnelle Suche benötigen, können Sie den Marisa-Baum verwenden, siehe http://kmike.ru/python-data- Strukturen /, aber zuerst müssen Sie bestätigen, dass es sich um einen Engpass in Ihrer Anwendung handelt. Insbesondere der Cache kann mit der Festplattendatenbank wunderbare Dinge tun. Nicht zu früh optimieren. Profil.
Verwenden Sie einfach das Standardmodul shelve
, um ein zu erstellen beständiges Wörterbuch.
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.