Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Przykład2-20przedstawiatworzenie,zapisywanieiładowanietablicy10milionów
losowychliczbzmiennoprzecinkowych.
Przykład2-20Tworzenie,zapisywanieiładowaniedużejtablicyliczbzmiennoprzecinkowych
>>>fromarrayimportarray³
>>>fromrandomimportrandom
>>>floats:array('d',(random()foriinrange(10**7)))·
>>>floats[-1]»
0.07802343889111107
>>>fp:open('floats.bin','wb')
>>>floats.tofile(fp)¿
>>>fp.close()
>>>floats2:array('d')´
>>>fp:open('floats.bin','rb')
>>>floats2.fromfile(fp,10**7)²
>>>fp.close()
>>>floats2[-1]
0.07802343889111107
>>>floats2::floatsº
True
³Importowanietypu
array
.
·Tworzenietablicyliczbzmiennoprzecinkowychpodwójnejprecyzji(kodtypu
'd'
)
napodstawiedowolnegoobiektuiterowalnego-wtymprzypadkuwyrażenia
generatora.
»Inspekcjaostatniejliczbytablicy.
¿Zapisanietablicydoplikubinarnego.
´Utworzeniepustejtablicyliczbpodwójnejprecyzji.
²Odczytanie10milionówliczbzplikubinarnego.
Inspekcjaostatniejliczbytablicy.
ºSprawdzenie,żezawartośćtabeljestjednakowa.
Jakmożemyzauważyć,metody
array.tole
i
array.fromle
łatwewużyciu.Jeśli
wypróbujemytenprzykład,zauważymy,żetakżebardzoszybkie.Szybkieksperyment
pokazuje,żezaładowanie10milionówliczbzmiennoprzecinkowychpodwójnejprecyzji
zapomocąmetody
array.fromle
zplikubinarnegoutworzonegozapomocąmetody
array.tole
zajmuje0,1s.Jesttoprawie60razyszybciejniżodczytanieliczbzpliku
tekstowego,coobejmujeparsowaniekażdegowierszazapomocąwbudowanejfunkcji
oat
.Zapisaniezapomocąmetody
array.tole
jestokoło7razyszybszeniżzapisanie
pojednejliczbiezmiennoprzecinkowejnawierszwplikutekstowym.Ponadtorozmiar
plikubinarnegoz10milionamiliczbpodwójnejprecyzjiwynosi80000000bajtów(8
Kiedylistaniejestrozwiązaniem
|
53