Python MemoryError

Python MemoryError

Python er et interaktivt og objektorientert programmeringsspråk som støtter flere programmeringsmodeller og prøver å gjøre alle modeller tilgjengelige og funksjonelle. Python -språk er lett å lære for en nybegynner. I Python er det flere typer feil som kan oppstå på Python -programmeringsspråket. Denne artikkelen skal fremheve en av feilene i Python kalt minnefeil, og vi vil diskutere dens definisjon, dens typer og hvordan du kan unngå eller fikse Python -minnefeilen. La oss starte med definisjonen.

Python MemoryError

Python -minnefeil er en feil som oppstår når tilfeldig tilgangsminne, også kjent som RAM, ikke kan støtte koden når den utføres fordi koden som kjører trenger mer enn den eksisterende RAM. Feilen oppstår ofte når en stor mengde data lastes inn i minnet og når et program går tom for minnet mens du behandler dataene. Enkelt sagt, denne feilen oppstår når du går tom for RAM for å kjøre koden.

Denne feilen oppstår ofte når en stor mengde data lastes inn i minnet og programmet går tom for minnet mens du behandler dataene.

Minnefeiltyper

Det er mange typer minnefeil i Python -programmering. En av feilene kan også oppstå hvis du har en stor ramstørrelse som er i stand til å håndtere de massive datasettene. En annen type oppstår når RAM -kapasiteten overskrides på grunn av dataene som er lagret på systemets harddisk.

Følgende er noen typer minnefeil:

Uventet minnefeil i Python

Denne feilen oppstår når systemet har RAM -plass, men programvaren du bruker fylte all den virtuelle adresseområdet det har tilgjengelig. Denne feilen oppstår når du bruker en 32-bit Python-installasjon fordi den bare har tilgang til 4 GB RAM. Hvis systemet du bruker bare er 32-bit, vil det tilgjengelige minnet bli redusert. Selv om 4 GB RAM er nok i de fleste tilfeller, er Python fremdeles et programmeringsspråk som har mer generelle formålsspråk. Python -programmeringsspråk brukes i mange viktige felt som datavitenskap, applikasjonsutvikling, kunstig intelligens og også grafisk brukergrensesnitt (GUI).

Minnefeil på grunn av feil installasjon av Python og et datasett

Datafilen som lastes inn i minnet kan være liten eller stor, avhengig av hvilken type program du vil kjøre. Imidlertid, hvis en stor mengde datasett lastes inn i minnet for å kjøre beregningene på, lagre dataene eller kjøre lappene på, kan minnet raskt gå tom.

En annen minnefeil kan oppstå hvis du installerer feil Python -pakke. For eksempel, hvis du installerte Python versjon 2 manuelt.7 og andre nødvendige programmer på Windows, kan du oppleve en minnefeil på grunn av en feil installasjonspakke.

Ut av minnefeil

En datamaskin kan vanligvis distribuere minnet til det er fullt, og Memory Manager bruker den tilgjengelige harddisken for å lagre minnefilene eller dokumentene hvis de ikke kan passe inn i RAM. Dette fører da til en ut av minnefeil, og du kan se den ved å gå inn i systemegenskapene og deretter velge ytelsesalternativene der du finner et sikkerhetskopieringsalternativ som får deg til å se det virtuelle minnet i Windows.

I det følgende avsnittet vil vi gi deg noen eksempler på minnefeil og de mye brukte løsningene du kan følge.

Eksempel:

La oss starte med en interessant kode for å se denne feilen i jobben. Her begynner vi med et tomt utvalg som heter “ABC” og legger strengene til den ved hjelp av de nestede matriser. I dette eksemplet brukes tre nivåer av nestede matriser med 20 000 iterasjoner for hver. Dette indikerer strengen “Nok en gang!”Vises 2.000.000.000.000 ganger i matrisen“ ABC ”på slutten av programmet.

ABC = []
for M in Range (20000):
For N in Range (20000):
for K in Range (20000):
ABC.Legg til ("Nok en gang!")

Her kan du se at den forrige koden resulterer i en minnefeil og grunnen er ganske åpenbar.

Hvordan unngå minnefeil

Det er flere løsninger for minnefeil, og du trenger den rette for å fikse dem. Den uventede minnefeilen kan løses hvis du installerer 64bit-versjonen av Python i stedet for 32-biters versjonen fordi den vil ha mye mer lagring og RAM, selv om det er mer minnebruk. En datasettfeil bør bruke de dedikerte generatormetodene og klassene som vil bli diskutert.

Følgende er noen løsninger som kan brukes for å unngå feilen:

Gratis minne i Python

Ved å bli kvitt unødvendige og ubrukte data ved å slette eller frigjøre dem, vil minnet ha mer plass. Vi kan også lagre bare relevante data ved hjelp av generatorer eller bruke en batch -teknikk for å dele de store datasettene i mindre datasett. For å gjøre dette kan vi bruke følgende kode:

Dette programmet, kjent som Garbage Collector (GC), er ansatt for å frigjøre minnet. Vi kan frigjøre minnet ved å eliminere de ikke -refererte objektene ved å bruke import søppelkollektor og GC.samle () linje.

Begrens CPU -bruk

Her kan ressursmodulen brukes til å begrense minnebruken av programmer eller CPU slik at en minnefeil ikke oppstår. Dette kan gjøres med følgende kode:

Her importerer vi bibliotekene til signalet som "seg", ressurs som "res" og "OS". For å sjekke om tidsbegrensningen er overskredet, bruker vi koden “check_time_exceed (singo, ramme)” og utskriftstid er oppe. For å sette opp ressursgrensen, bruker vi koden “set_runtime (Seconds)”.

Begrens minnebruken

For å begrense minnebruken, begrenser følgende kode det totale adresseområdet. Her importerer vi ressursmodulen og definerer en funksjon som heter “Memory_size” der vi gir muligheten til å sette en grense.

Importer ressurs som res
def memory_size (max_size):
myk, hard = res.getRlimit (res.Rlimit_as)
res.setRlimit (res.Rlimit_as, (max_size, hard))

Tildel mer minne

Minnefeil kan også unngås hvis mer minne kan fordeles til Pythons minneinnstillinger ved å konfigurere minnet for å tildele mer RAM.

Velg et mindre datasett eller bruk en datamaskin med mer minne

Bruke de progressive datastyringsteknikkene for å tilfeldig prøve dataene etter de første 100, 1000 eller 100 000 rader for å løse problemet. Vi kan også unngå minnefeilen hvis vi har tilgang til en større datamaskin med mer minne.

Importer numpy
numpy.tilfeldig.Uniform (lav = 1, høy = 20, størrelse = (50000.200000)))

Her kan vi se at hvis vi bruker de "numpy" operasjonene, produserer det tilfeldige tall mellom 50 000 og 200000, og det laveste antallet er 1 og det høyeste var 20. Størrelsen som er nevnt i koden er så massiv at det oppstår en minnefeil.

Derfor er det bedre å bruke mindre datasett eller bruke en datamaskin med høyere minne. For eksempel, hvis vi bruker 1000 og 20000 i stedet for 50000 og 200000, vil ikke koden vise feilen.

Importer numpy
numpy.tilfeldig.Uniform (lav = 1, høy = 20, størrelse = (1000.20000))

Konklusjon

I denne artikkelen snakket vi om minnefeil. Vårt viktigste bidrag er at minnefeilen er bruken av RAM på datamaskinen vår, der mange operasjoner finner sted. Vi lærte også forskjellige metoder som kan brukes til å håndtere en Python -minnefeil. Denne artikkelen er en enkel guide som introduserer hva en minnefeil er, hva den er, og hvordan vi kan løse eller unngå den.