Gibt's jetzt noch eine Frage? Und wenn ja, wie lautet die?
Ansonsten stell ich noch ein paar: es sollen eine Billion Fliesskommazahlen gespeichert werden!? In *einer* Datenstruktur? Oder in einer Million Datenstrukturen? Und wie soll darauf zugegriffen werden? komplett wahlfrei oder reicht der Zugriff auf jeweils ein "Millionen-Häppchen"?
Ein `array.array()` mit einer Million `float()`\s belegt grob 8 Megabyte Speicher. Wenn man C `float`\s nimmt, und deren Genauigkeit ausreicht, ist's nur der halbe Speicherbedarf.
Um Plattenplatz zu sparen, könnte es sich eventuell lohnen die Daten mit `zlib` oder `bz2` zu komprimieren. Beide stehen unter diesen Namen als Kodierung für die `encode()`/`decode()`-Methoden von Zeichenketten zur Verfügung. Ohne Komprimierung in irgendeiner Weise brauchen eine Billion Fliesskommazahlen "roh" ca. 8 bzw. 4 Terabyte, je nachdem ob man `float` oder `double` (beides C-Datentypen) verwendet.
Zu guter Letzt würde ich auch noch mal gerne `pickle` in Frage stellen. Bei grossen Datenmengen sind eigentlich Datenbanken gefragt. Bei *diesen* Grössenordnungen und der Art der Daten am besten spezielle Formate wie HDF5 oder netCDF, die auf grosse Mengen von Messdaten und Ähnliches spezialisiert sind.
http://en.wikipedia.org/wiki/HDF5