Ja, das Diktat wird im Prozessspeicher gespeichert. Wenn es also groß genug wird, dass im System-RAM nicht genug Platz ist, können Sie mit einer massiven Verlangsamung rechnen, wenn das System den Speicher auf und von der Festplatte austauscht.
Andere haben gesagt, dass ein paar Millionen Artikel kein Problem darstellen sollten; Ich bin mir nicht sicher. Das Diktat selbst (vor dem Zählen des von den Schlüsseln und Werten belegten Speichers) ist signifikant. Für Python 2.6 oder höher gibt sys.getsizeof einige nützliche Informationen darüber, wie viel RAM verschiedene Python-Strukturen belegen. Einige schnellen Ergebnisse, von Python 2.6 auf einem 64-Bit-OS X-Rechner:
>>> from sys import getsizeof
>>> getsizeof(dict((n, 0) for n in range(5462)))/5462.
144.03368729403149
>>> getsizeof(dict((n, 0) for n in range(5461)))/5461.
36.053470060428495
So ist der dict Kopf variiert zwischen 36 Bytes pro Stück und 144 Bytes pro Artikel auf dieser Maschine (der genaue Wert je nachdem, wie voll die Die interne Hash-Tabelle des Dictionary ist: hier 5461 = 2 ** 14 // 3 ist einer der Schwellenwerte, bei denen die interne Hash-Tabelle vergrößert wird.Und das, bevor der Overhead für die dict-Elemente selbst hinzugefügt wird; Wenn es sich um kurze Zeichenfolgen handelt (z. B. 6 Zeichen oder weniger), fügt dies noch weitere> = 80 Byte pro Element hinzu (möglicherweise weniger, wenn viele verschiedene Tasten denselben Wert haben).
So würde es nicht , dass viele Millionen dict Elemente zu RAM auf einer typischen Maschine zu entlüften.
danke, erfuhr von getsizeof von diesem. Praktisch werde ich nur mit ~ 15k Werten arbeiten, und Geschwindigkeit ist von der Bedeutung. Ich benutze ein Diktat einfach, weil ich Datenbanken überhaupt nicht berührt habe, aber ich nehme an, dass eine DB, die von einer Festplatte liest und schreibt, langsamer wäre, als ein Diktat zu lesen/schreiben? – PPTim
Okay, für ein Diktat dieser Größe sollten Sie keine Probleme haben. Was sind die Arten der Schlüssel und Werte? Saiten? –
meist schwebt, einige Strings, ein paar Listen – PPTim