Profiling kode untuk penggunaan memori

Menulis Kode Python yang Efisien

Logan Thomas

Scientific Software Technical Trainer, Enthought

Pendekatan cepat dan sederhana

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
Menulis Kode Python yang Efisien

Profiling kode: memori

  • Statistik rinci konsumsi memori
  • Analisis per baris
  • Paket yang digunakan: memory_profiler
pip install memory_profiler
  • Menggunakan paket memory_profiler
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Menulis Kode Python yang Efisien

Profiling kode: memori

  • Fungsi harus diimpor saat memakai memory_profiler
    • hero_funcs.py

 

from hero_funcs import convert_units
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Menulis Kode Python yang Efisien

Output %mprun

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

alt=”Perintah magic mprun dengan output tabel yang merangkum statistik profiling penggunaan memori”

Menulis Kode Python yang Efisien

Output %mprun

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

alt=”Perintah magic mprun dengan output tabel yang merangkum statistik profiling penggunaan memori dengan kolom Line # disorot”

Menulis Kode Python yang Efisien

Output %mprun

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

alt=”Perintah magic mprun dengan output tabel yang merangkum statistik profiling penggunaan memori dengan kolom Mem usage disorot”

Menulis Kode Python yang Efisien

Output %mprun

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

alt=”Perintah magic mprun dengan output tabel yang merangkum statistik profiling penggunaan memori dengan kolom Increment disorot”

Menulis Kode Python yang Efisien

Output %mprun

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

alt=”Perintah magic mprun dengan output tabel yang merangkum statistik profiling penggunaan memori dengan kolom Line contents disorot”

Menulis Kode Python yang Efisien

Output %mprun

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

alt=”Perintah magic mprun dengan output tabel yang merangkum statistik profiling penggunaan memori”

Menulis Kode Python yang Efisien

Catatan pada output %mprun

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

alt=”Perintah magic mprun dengan output tabel yang merangkum statistik profiling penggunaan memori dengan satuan mebibyte (MiB) pada output disorot”

Menulis Kode Python yang Efisien

Catatan pada output %mprun

Data pada contoh ini adalah sampel acak 35.000 pahlawan.

(bukan dataset 480 superhero asli)

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

alt=”Perintah magic mprun dengan output tabel yang merangkum statistik profiling penggunaan memori”

Menulis Kode Python yang Efisien

Catatan pada output %mprun

Alokasi memori kecil dapat menghasilkan output 0.0 MiB.

(menggunakan dataset 480 superhero asli)

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

alt=”Perintah magic mprun dengan output tabel yang merangkum statistik profiling penggunaan memori dengan semua baris di kolom Increment menunjukkan 0.0 MiB”

Menulis Kode Python yang Efisien

Catatan pada output %mprun

  • Memeriksa memori dengan mengkueri sistem operasi
  • Hasil dapat berbeda antar platform dan antar run
    • Tetap bisa membandingkan setiap baris kode berdasarkan konsumsi memori
Menulis Kode Python yang Efisien

Ayo berlatih!

Menulis Kode Python yang Efisien

Preparing Video For Download...