Profilarea codului pentru utilizarea memoriei

Scriere eficientă a codului Python

Logan Thomas

Scientific Software Technical Trainer, Enthought

Abordare rapidă și simplă

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
Scriere eficientă a codului Python

Profilarea codului: memorie

  • Statistici detaliate privind consumul de memorie
  • Analiză linie cu linie
  • Pachet utilizat: memory_profiler
pip install memory_profiler
  • Folosind pachetul memory_profiler
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Scriere eficientă a codului Python

Profilarea codului: memorie

  • Funcțiile trebuie importate când se folosește memory_profiler
    • hero_funcs.py

 

from hero_funcs import convert_units
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Scriere eficientă a codului Python

Ieșirea %mprun

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

alt="Ieșire tabelară a comenzii magice mprun cu statistici de profilare a utilizării memoriei"

Scriere eficientă a codului Python

Ieșirea %mprun

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

alt="Ieșire tabelară a comenzii magice mprun cu coloana Line # evidențiată"

Scriere eficientă a codului Python

Ieșirea %mprun

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

alt="Ieșire tabelară a comenzii magice mprun cu coloana Mem usage evidențiată"

Scriere eficientă a codului Python

Ieșirea %mprun

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

alt="Ieșire tabelară a comenzii magice mprun cu coloana Increment evidențiată"

Scriere eficientă a codului Python

Ieșirea %mprun

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

alt="Ieșire tabelară a comenzii magice mprun cu coloana Line contents evidențiată"

Scriere eficientă a codului Python

Ieșirea %mprun

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

alt="Ieșire tabelară a comenzii magice mprun cu statistici de profilare a utilizării memoriei"

Scriere eficientă a codului Python

Limitări ale ieșirii %mprun

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

alt="Ieșire tabelară a comenzii magice mprun cu mebibytes (MiB) evidențiați în ieșire"

Scriere eficientă a codului Python

Limitări ale ieșirii %mprun

Datele folosite sunt un eșantion aleatoriu de 35.000 de eroi.

(nu setul de date original cu 480 de supereroi)

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

alt="Ieșire tabelară a comenzii magice mprun cu statistici de profilare a utilizării memoriei"

Scriere eficientă a codului Python

Limitări ale ieșirii %mprun

Alocările mici de memorie pot produce ieșirea 0.0 MiB.

(folosind setul de date original cu 480 de supereroi)

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

alt="Ieșire tabelară a comenzii magice mprun cu toate rândurile din coloana Increment afișând 0.0 MiB"

Scriere eficientă a codului Python

Limitări ale ieșirii %mprun

  • Inspectează memoria prin interogarea sistemului de operare
  • Rezultatele pot varia între platforme și rulări
    • Se poate totuși compara consumul de memorie linie cu linie
Scriere eficientă a codului Python

Să exersăm!

Scriere eficientă a codului Python

Preparing Video For Download...