Når vi skriver store skript eller kode med mange linjer, bør minnehåndtering være vår høyeste prioritet. Derfor bør vi ha god kunnskap om å håndtere minne effektivt i tillegg til god programmeringskunnskap. Vi har mange funksjoner gitt i Python for å få størrelsen i minnet til et bestemt objekt som finnes i programmet, og en av slike funksjoner er __sizeof__(). I denne opplæringen vil vi lære om funksjonen __sizeof__() og dens funksjon i et Python-program.
pandaer iterrows
Python __sizeof__() funksjon
__sizeof__()-funksjonen i Python forteller oss ikke akkurat størrelsen på objektet. Den returnerer ikke størrelsen på et generatorobjekt, da Python ikke kan fortelle oss på forhånd hvor stor størrelsen på en generator er. Likevel, i virkeligheten, returnerer den den interne størrelsen for et bestemt objekt (i byte) som opptar minnet.
For å forstå dette, la oss se på følgende eksempelprogram med et endeløst generatorobjekt.
Eksempel 1: Se på følgende Python-program:
# A default function with endless generator object in it def endlessGenerator(): # A counting variable to initialize the generator counting = 0 # Using while loop to create an endless generator while True: yield counting counting += 1 # Creating infinite loop # Printing memory size of a generator object print('Internal memory size of endless generator object: ', endlessGenerator.__sizeof__())
Produksjon
Internal memory size of endless generator object: 120
Forklaring:
Vi har brukt en standardfunksjon, dvs. endlessGenerator(), for å lage et endeløst generatorobjekt i programmet. I funksjonen har vi initialisert en variabel, dvs. telling = 0. Vi har brukt en while-løkke på tellevariabelen uten å gi et bruddpunkt på loopen. Ved å lage en uendelig sløyfe i funksjonen har vi laget standardfunksjonen som et endeløst generatorobjekt. Til slutt har vi skrevet ut den interne minnestørrelsen til det endeløse generatorobjektet ved å bruke funksjonen __sizeof__().
strengen er tom
Nå kan vi tydelig forstå hvordan funksjonen __sizeof__() fungerer. Siden det endeløse generatorobjektet i programmet ovenfor ikke har noe slutt- eller bruddpunkt, kan ikke Python fortelle oss størrelsen på generatoren på forhånd. Men samtidig kan vi sjekke størrelsen på det interne minnet som er tildelt generatorobjektet ved hjelp av funksjonen __sizeof__() siden det må oppta noe internt minne i Python.
La oss se på et eksempel til der vi bruker funksjonen __sizeof__() for å få den interne minnestørrelsen uten overhead.
Eksempel 2:
# Define an empty list in the program emptyList = [] # Printing size of empty list print('Internal memory size of an empty list: ', emptyList.__sizeof__()) # Define some lists with elements a = [24] b = [24, 26, 31, 6] c = [1, 2, 6, 5, 415, 9, 23, 29] d = [4, 5, 12, 3, 2, 9, 20, 40, 32, 64] # Printing internal memory size of lists print('Memory size of first list: ', a.__sizeof__()) print('Memory size of second list: ', b.__sizeof__()) print('Memory size of third list: ', c.__sizeof__()) print('Memory size of fourth list: ', d.__sizeof__())
Produksjon
Internal memory size of an empty list: 40 Memory size of first list: 48 Memory size of second list: 104 Memory size of third list: 104 Memory size of fourth list: 136
Forklaring:
Ved å bruke funksjonen __sizeof__() kan vi tydelig se at den interne minnestørrelsen til en tom liste er 40 byte, og hvert element som er tilstede i listen legger til 8 bytes størrelse til listens totale minnestørrelse.