Kada pišemo velike skripte ili kod od mnogo redaka, upravljanje memorijom bi trebalo biti naš najveći prioritet. Stoga bismo trebali imati dobro znanje o učinkovitom rukovanju memorijom uz dobro znanje programiranja. U Pythonu imamo mnogo funkcija za dobivanje veličine u memoriji određenog objekta prisutnog u programu, a jedna od takvih funkcija je __sizeof__(). U ovom vodiču naučit ćemo o funkciji __sizeof__() i njenom radu unutar Python programa.
Python __sizeof__() funkcija
Funkcija __sizeof__() u Pythonu ne govori nam točno o veličini objekta. Ne vraća veličinu objekta generatora jer nam Python ne može unaprijed reći kolika je veličina generatora. Ipak, u stvarnosti, vraća internu veličinu za određeni objekt (u bajtovima) koji zauzima memoriju.
Da bismo ovo razumjeli, pogledajmo sljedeći primjer programa s beskonačnim generatorskim objektom.
sta je f5 na tipkovnici
Primjer 1: Pogledajte sljedeći 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__())
Izlaz
Internal memory size of endless generator object: 120
Obrazloženje:
Koristili smo zadanu funkciju, tj. endlessGenerator(), za stvaranje objekta beskonačnog generatora u programu. U funkciji smo inicijalizirali varijablu, tj. brojanje = 0. Koristili smo while petlju na varijabli brojanja bez davanja točke prekida u petlji. Stvaranjem beskonačne petlje u funkciji, napravili smo zadanu funkciju kao beskonačni objekt generatora. Konačno, ispisali smo veličinu interne memorije objekta beskonačnog generatora pomoću funkcije __sizeof__().
kako vratiti niz java
Sada možemo jasno razumjeti funkcioniranje funkcije __sizeof__(). Kako beskrajni objekt generatora u gornjem programu nema kraj ili prijelomnu točku, Python nam ne može unaprijed reći veličinu generatora. Ali u isto vrijeme možemo provjeriti veličinu interne memorije dodijeljenu objektu generatora pomoću funkcije __sizeof__() jer ona mora zauzimati nešto interne memorije u Pythonu.
Pogledajmo još jedan primjer u kojem koristimo funkciju __sizeof__() da dobijemo veličinu interne memorije bez dodatnih troškova.
Primjer 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__())
Izlaz
niz u json objekt
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
Obrazloženje:
Pomoću funkcije __sizeof__() možemo jasno vidjeti da je veličina unutarnje memorije praznog popisa 40 bajtova i da svaki element prisutan na popisu dodaje veličinu od 8 bajtova ukupnoj veličini memorije popisa.