Perfilado de código: uso de memoria

Cómo escribir código Python eficiente

Logan Thomas

Scientific Software Technical Trainer, Enthought

Enfoque rápido y sencillo

import sys
nums_list = [*range(1000)]
sys.getsizeof(nums_list)
9112
import numpy as np

nums_np = np.array(range(1000))
sys.getsizeof(nums_np)
8096
Cómo escribir código Python eficiente

Perfilado de código: memoria

  • Estadísticas detalladas del consumo de memoria
  • Análisis línea a línea
  • Paquete usado: memory_profiler
pip install memory_profiler
  • Usando el paquete memory_profiler
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Cómo escribir código Python eficiente

Perfilado de código: memoria

  • Las funciones deben importarse al usar memory_profiler
    • hero_funcs.py

 

from hero_funcs import convert_units
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Cómo escribir código Python eficiente

Salida de %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

alt=”Salida en tabla de la magic mprun que resume estadísticas de perfilado de memoria”

Cómo escribir código Python eficiente

Salida de %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

alt=”Salida en tabla de la magic mprun que resume estadísticas de perfilado de memoria con la columna Line # resaltada”

Cómo escribir código Python eficiente

Salida de %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

alt=”Salida en tabla de la magic mprun que resume estadísticas de perfilado de memoria con la columna Mem usage resaltada”

Cómo escribir código Python eficiente

Salida de %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

alt=”Salida en tabla de la magic mprun que resume estadísticas de perfilado de memoria con la columna Increment resaltada”

Cómo escribir código Python eficiente

Salida de %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

alt=”Salida en tabla de la magic mprun que resume estadísticas de perfilado de memoria con la columna Line contents resaltada”

Cómo escribir código Python eficiente

Salida de %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

alt=”Salida en tabla de la magic mprun que resume estadísticas de perfilado de memoria”

Cómo escribir código Python eficiente

Advertencias de la salida de %mprun

%mprun -f convert_units convert_units(heroes, hts, wts)

alt=”Salida en tabla de la magic mprun que resume estadísticas de perfilado de memoria con mebibytes (MiB) resaltados en la salida”

Cómo escribir código Python eficiente

Advertencias de la salida de %mprun

Los datos de este ejemplo son una muestra aleatoria de 35.000 héroes.

(no es el conjunto original de 480 superhéroes)

%mprun -f convert_units convert_units(heroes, hts, wts)

alt=”Salida en tabla de la magic mprun que resume estadísticas de perfilado de memoria”

Cómo escribir código Python eficiente

Advertencias de la salida de %mprun

Asignaciones pequeñas de memoria pueden dar 0.0 MiB.

(usando el conjunto original de 480 superhéroes)

%mprun -f convert_units convert_units(heroes, hts, wts)

alt=”Salida en tabla de la magic mprun que resume estadísticas de perfilado de memoria con todas las filas de la columna Increment mostrando 0.0 MiB”

Cómo escribir código Python eficiente

Advertencias de la salida de %mprun

  • Inspecciona la memoria consultando el sistema operativo
  • Los resultados pueden variar entre plataformas y ejecuciones
    • Aun así, puedes comparar líneas de código por consumo de memoria
Cómo escribir código Python eficiente

¡Vamos a practicar!

Cómo escribir código Python eficiente

Preparing Video For Download...