La diferencia entre len() y sys.getsizeof() en Python
De un vistazo, las funciones len()
y sys.getsizeof()
en Python parecen tener la misma funcionalidad de encontrar la longitud de los objetos. Por el contrario, estos dos métodos tienen significados semánticos completamente diferentes cuando se implementan.
La función len()
en Python
La función len()
se utiliza para consultar el número de elementos de un objeto. El objeto puede ser un array, una cola, una tupla o una lista. Si se llama a este método en una cadena, devuelve el número de caracteres de esa cadena en particular.
Ejemplo:
print(len("Batman"))
Producción :
6
6 es el número total de personajes que forman la cadena de Batman.
Cuando llame a la función len()
en una lista de elementos como la siguiente, devolverá el número total de elementos que componen la lista.
animals = ["Koala", "Guineapig", "Bear", "Zebra", "Giraffe"]
print(len(animals))
Producción :
5
La lista de animales contiene un total de cinco animales como resultado que se devuelve.
La función sys.getsizeof()
en Python
El módulo sys en Python proporciona una función sys.getsizeof()
, que esencialmente devuelve el tamaño de la memoria de un objeto que se le pasa en la unidad de bytes. El consumo de memoria del objeto es lo que se contabiliza en lugar del consumo de memoria al que se refiere el objeto. Esta función es específica de la implementación, por lo tanto, cuando se le pasan objetos integrados, devuelve resultados correctos. De lo contrario, puede devolver resultados falsos para extensiones de terceros.
sys.getsizeof()
Sintaxis
sys.getsizeof(object[, default])
Si bien el argumento del objeto es el elemento para encontrar el tamaño, el argumento predeterminado le permite definir un valor que se devolverá si el argumento del objeto no recupera el tamaño. En caso de que el objeto no recupere el tamaño y no se proporcione un valor predeterminado, se genera una excepción TypeError
.
Cuando usa la función sys.getsizeof()
, llama al método _sizeof_
del objeto, y luego agrega una sobrecarga adicional del recolector de basura si el recolector de basura administra el objeto.
Ejemplo:
import sys
print(sys.getsizeof("hello"))
Producción :
54
La salida está en bytes
. Este es el tamaño de memoria total que ocupa hello
.
La cadena vacía incluso ocupa 49 bytes en la memoria.
import sys
print(sys.getsizeof(""))
Producción :
49
La principal diferencia que existe entre la función len()
y la función sys.getsizeof()
es que la primera devuelve la longitud real de los elementos dentro de un contenedor, mientras que la última devuelve el tamaño de memoria que ocupa este objeto.