Profilování kódu pro využití paměti

Psaní efektivního kódu v Pythonu

Logan Thomas

Scientific Software Technical Trainer, Enthought

Rychlý a přímočarý přístup

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
Psaní efektivního kódu v Pythonu

Profilování kódu: paměť

  • Podrobné statistiky spotřeby paměti
  • Analýza po řádcích
  • Použitý balíček: memory_profiler
pip install memory_profiler
  • Použití balíčku memory_profiler
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Psaní efektivního kódu v Pythonu

Profilování kódu: paměť

  • Při použití memory_profiler musí být funkce importovány
    • hero_funcs.py

 

from hero_funcs import convert_units
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Psaní efektivního kódu v Pythonu

Výstup %mprun

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

alt="Tabulkový výstup příkazu mprun se statistikami profilování paměti"

Psaní efektivního kódu v Pythonu

Výstup %mprun

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

alt="Tabulkový výstup příkazu mprun se statistikami profilování paměti se zvýrazněným sloupcem Line #"

Psaní efektivního kódu v Pythonu

Výstup %mprun

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

alt="Tabulkový výstup příkazu mprun se statistikami profilování paměti se zvýrazněným sloupcem Mem usage"

Psaní efektivního kódu v Pythonu

Výstup %mprun

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

alt="Tabulkový výstup příkazu mprun se statistikami profilování paměti se zvýrazněným sloupcem Increment"

Psaní efektivního kódu v Pythonu

Výstup %mprun

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

alt="Tabulkový výstup příkazu mprun se statistikami profilování paměti se zvýrazněným sloupcem Line contents"

Psaní efektivního kódu v Pythonu

Výstup %mprun

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

alt="Tabulkový výstup příkazu mprun se statistikami profilování paměti"

Psaní efektivního kódu v Pythonu

Upozornění k výstupu %mprun

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

alt="Tabulkový výstup příkazu mprun se statistikami profilování paměti se zvýrazněnou hodnotou mebibytů (MiB) ve výstupu"

Psaní efektivního kódu v Pythonu

Upozornění k výstupu %mprun

Data použitá v tomto příkladu jsou náhodným vzorkem 35 000 hrdinů.

(nikoli původní datová sada 480 superhrdinů)

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

alt="Tabulkový výstup příkazu mprun se statistikami profilování paměti"

Psaní efektivního kódu v Pythonu

Upozornění k výstupu %mprun

Malé alokace paměti mohou vést k výstupu 0.0 MiB.

(s použitím původní datové sady 480 superhrdinů)

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

alt="Tabulkový výstup příkazu mprun se statistikami profilování paměti – všechny řádky sloupce Increment zobrazují 0.0 MiB"

Psaní efektivního kódu v Pythonu

Upozornění k výstupu %mprun

  • Zjišťuje využití paměti dotazem na operační systém
  • Výsledky se mohou lišit podle platformy a spuštění
    • Lze stále porovnávat spotřebu paměti jednotlivých řádků kódu
Psaní efektivního kódu v Pythonu

Pojďme si procvičit!

Psaní efektivního kódu v Pythonu

Preparing Video For Download...