Bellek kullanımı için kod profilleme

Verimli Python Kodu Yazmak

Logan Thomas

Scientific Software Technical Trainer, Enthought

Hızlı ve pratik yaklaşım

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
Verimli Python Kodu Yazmak

Kod profilleme: bellek

  • Bellek tüketimine dair ayrıntılı istatistikler
  • Satır satır analiz
  • Kullanılan paket: memory_profiler
pip install memory_profiler
  • memory_profiler kullanımı
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Verimli Python Kodu Yazmak

Kod profilleme: bellek

  • memory_profiler kullanırken fonksiyonlar içe aktarılmalıdır
    • hero_funcs.py

 

from hero_funcs import convert_units
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Verimli Python Kodu Yazmak

%mprun çıktısı

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

alt="Sihirli komut mprun, bellek profilleme istatistiklerinin tablo çıktısı"

Verimli Python Kodu Yazmak

%mprun çıktısı

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

alt="Sihirli komut mprun, bellek profilleme istatistiklerinin tablo çıktısı; Line # sütunu vurgulanmış"

Verimli Python Kodu Yazmak

%mprun çıktısı

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

alt="Sihirli komut mprun, bellek profilleme istatistiklerinin tablo çıktısı; Mem usage sütunu vurgulanmış"

Verimli Python Kodu Yazmak

%mprun çıktısı

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

alt="Sihirli komut mprun, bellek profilleme istatistiklerinin tablo çıktısı; Increment sütunu vurgulanmış"

Verimli Python Kodu Yazmak

%mprun çıktısı

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

alt="Sihirli komut mprun, bellek profilleme istatistiklerinin tablo çıktısı; Line contents sütunu vurgulanmış"

Verimli Python Kodu Yazmak

%mprun çıktısı

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

alt="Sihirli komut mprun, bellek profilleme istatistiklerinin tablo çıktısı"

Verimli Python Kodu Yazmak

%mprun çıktısına dair uyarılar

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

alt="Sihirli komut mprun, bellek profilleme istatistiklerinin tablo çıktısı; çıktıdaki mebibyte (MiB) vurgulanmış"

Verimli Python Kodu Yazmak

%mprun çıktısına dair uyarılar

Bu örnekteki veri, 35.000 kahramandan rastgele bir örnektir.

(orijinal 480 süper kahraman veri kümesi değil)

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

alt="Sihirli komut mprun, bellek profilleme istatistiklerinin tablo çıktısı"

Verimli Python Kodu Yazmak

%mprun çıktısına dair uyarılar

Küçük bellek tahsisleri 0.0 MiB çıktısına yol açabilir.

(orijinal 480 süper kahraman veri kümesi kullanılarak)

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

alt="Sihirli komut mprun, bellek profilleme istatistiklerinin tablo çıktısı; Increment sütunundaki tüm satırlar 0.0 MiB gösteriyor"

Verimli Python Kodu Yazmak

%mprun çıktısına dair uyarılar

  • Belleği işletim sistemine sorgu ile inceler
  • Sonuçlar platformlar ve çalıştırmalar arasında değişebilir
    • Yine de her satırın bellek tüketimi açısından karşılaştırmasını görebilirsiniz
Verimli Python Kodu Yazmak

Haydi pratik yapalım!

Verimli Python Kodu Yazmak

Preparing Video For Download...