Når vi skriver store scripts eller kode med mange linjer, bør hukommelsesstyring være vores højeste prioritet. Derfor bør vi have et godt kendskab til at håndtere hukommelsen effektivt udover god programmeringsviden. Vi har mange funktioner givet i Python for at få størrelsen i hukommelsen af et bestemt objekt til stede i programmet, og en af sådanne funktioner er __sizeof__(). I denne tutorial lærer vi om funktionen __sizeof__() og dens funktion i et Python-program.
python __navn__
Python __sizeof__() funktion
Funktionen __sizeof__() i Python fortæller os ikke nøjagtigt størrelsen af objektet. Det returnerer ikke størrelsen af et generatorobjekt, da Python ikke på forhånd kan fortælle os, hvor stor en generator er. Alligevel returnerer den i virkeligheden den interne størrelse for et bestemt objekt (i bytes), der optager hukommelsen.
For at forstå dette, lad os 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__())
Produktion
Internal memory size of endless generator object: 120
Forklaring:
Vi har brugt en standardfunktion, dvs. endlessGenerator(), til at skabe et endeløst generatorobjekt i programmet. I funktionen har vi initialiseret en variabel, altså tælle = 0. Vi har brugt en while-løkke på tællevariablen uden at give et brudpunkt på løkken. Ved at skabe en uendelig løkke i funktionen har vi lavet standardfunktionen som et endeløst generatorobjekt. Endelig har vi udskrevet den interne hukommelsesstørrelse af det endeløse generatorobjekt ved at bruge funktionen __sizeof__() .
java anonym funktion
Nu kan vi tydeligt forstå funktionen af __sizeof__() funktion. Da det endeløse generatorobjekt i ovenstående program ikke har noget ende- eller breakpoint, kan Python ikke fortælle os størrelsen af generatoren på forhånd. Men på samme tid kan vi kontrollere den interne hukommelsesstørrelse, der er tildelt generatorobjektet ved hjælp af __sizeof__()-funktionen, da den skal optage noget intern hukommelse i Python.
Lad os se på endnu et eksempel, hvor vi bruger funktionen __sizeof__() til at få den interne hukommelsesstørrelse uden 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__())
Produktion
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 at bruge funktionen __sizeof__() kan vi tydeligt se, at den interne hukommelsesstørrelse på en tom liste er 40 bytes, og hvert element på listen tilføjer 8 bytes størrelse til listens samlede hukommelsesstørrelse.