Gỡ lỗi mã để đo bộ nhớ

Viết mã Python hiệu quả

Logan Thomas

Scientific Software Technical Trainer, Enthought

Cách nhanh gọn

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
Viết mã Python hiệu quả

Gỡ lỗi mã: bộ nhớ

  • Thống kê chi tiết về mức dùng bộ nhớ
  • Phân tích theo từng dòng
  • Gói dùng: memory_profiler
pip install memory_profiler
  • Dùng gói memory_profiler
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Viết mã Python hiệu quả

Gỡ lỗi mã: bộ nhớ

  • Phải import hàm khi dùng memory_profiler
    • hero_funcs.py

 

from hero_funcs import convert_units
%load_ext memory_profiler

%mprun -f convert_units convert_units(heroes, hts, wts)
Viết mã Python hiệu quả

Kết quả %mprun

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

alt=”Lệnh magic mprun cho bảng tóm tắt thống kê phân tích sử dụng bộ nhớ”

Viết mã Python hiệu quả

Kết quả %mprun

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

alt=”Lệnh magic mprun cho bảng tóm tắt thống kê phân tích sử dụng bộ nhớ với cột Line # được tô sáng”

Viết mã Python hiệu quả

Kết quả %mprun

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

alt=”Lệnh magic mprun cho bảng tóm tắt thống kê phân tích sử dụng bộ nhớ với cột Mem usage được tô sáng”

Viết mã Python hiệu quả

Kết quả %mprun

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

alt=”Lệnh magic mprun cho bảng tóm tắt thống kê phân tích sử dụng bộ nhớ với cột Increment được tô sáng”

Viết mã Python hiệu quả

Kết quả %mprun

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

alt=”Lệnh magic mprun cho bảng tóm tắt thống kê phân tích sử dụng bộ nhớ với cột Line contents được tô sáng”

Viết mã Python hiệu quả

Kết quả %mprun

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

alt=”Lệnh magic mprun cho bảng tóm tắt thống kê phân tích sử dụng bộ nhớ”

Viết mã Python hiệu quả

Lưu ý về kết quả %mprun

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

alt=”Lệnh magic mprun cho bảng tóm tắt thống kê phân tích sử dụng bộ nhớ với đơn vị mebibyte (MiB) được tô sáng trong kết quả”

Viết mã Python hiệu quả

Lưu ý về kết quả %mprun

Dữ liệu ví dụ này là mẫu ngẫu nhiên 35.000 nhân vật.

(không phải bộ 480 siêu anh hùng gốc)

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

alt=”Lệnh magic mprun cho bảng tóm tắt thống kê phân tích sử dụng bộ nhớ”

Viết mã Python hiệu quả

Lưu ý về kết quả %mprun

Cấp phát bộ nhớ nhỏ có thể cho kết quả 0.0 MiB.

(dùng bộ dữ liệu 480 siêu anh hùng gốc)

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

alt=”Lệnh magic mprun cho bảng tóm tắt thống kê phân tích sử dụng bộ nhớ, mọi hàng trong cột Increment đều là 0.0 MiB”

Viết mã Python hiệu quả

Lưu ý về kết quả %mprun

  • Kiểm tra bộ nhớ bằng cách hỏi hệ điều hành
  • Kết quả có thể khác giữa nền tảng và mỗi lần chạy
    • Vẫn so sánh được mức tiêu thụ bộ nhớ theo từng dòng mã
Viết mã Python hiệu quả

Ayo berlatih!

Viết mã Python hiệu quả

Preparing Video For Download...