Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Noin 11 000 tiedoston lukeminen muistiin

Multibyte [12.08.2018 09:38:38]

#

Moi

Mitenköhän Pythonilla onnistuisi lukea muistiin noin 11 000 txt/html-tiedostoa, ettei niitä tarvitsisi lukea levyltä kuin kerran?

Tämän jälkeen niiden lukeminen muistista olisi myös nopeampaa?

The Alchemist [12.08.2018 12:29:24]

#

Mikä tässä on se ongelma? Ajat loopissa tiedostot läpi ja luet ne muistiin.

Metabolix [12.08.2018 15:02:01]

#

Voit lukea tiedostot silmukassa.

# Lista nimistä.
tiedostonimet = ["a.txt", "b.html"]

# Luetaan tiedostot sanakirjaan.
tiedot = dict((nimi, open(nimi).read()) for nimi in tiedostonimet)

# Tulostetaan tiedot malliksi.
for nimi in tiedostonimet:
	print("==> %s <==\n%s" % (nimi, tiedot[nimi]))

Modernit käyttöjärjestelmät (ainakin Linux) sisältävät myös automaattisen välimuistin, eli periaatteessa haluamasi asia saattaa tapahtua aivan itsestään. Välimuistilla on yleensä jokin maksimikoko, joten jos tiedostojen koko on vaikka 4 Gt ja koneen muisti on 8 Gt, kaikkia tiedostoja ei ehkä pidetä välimuistissa. Lisäksi välimuistista huolimatta Pythonin ja käyttöjärjestelmän välinen kommunikaatio vie aikaa, ja siksi yllä esitetty ratkaisu on vielä tehokkaampi (kunhan kaikki tiedostot mahtuvat kerralla muistiin).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta