Bắt đầu ngayBắt đầu miễn phí

Dùng %mprun: Hero BMI 2.0

Hãy kiểm tra xem dùng một cách tiếp cận khác để tính BMI có giúp tiết kiệm bộ nhớ hay không. Như bạn nhớ, chiều cao và cân nặng của mỗi siêu anh hùng được lưu trong một mảng numpy. Điều đó có nghĩa là bạn có thể tận dụng khả năng lập chỉ mục mảng và broadcasting tiện lợi của NumPy để thực hiện các phép tính. Một hàm tên là calc_bmi_arrays đã được tạo và lưu trong tệp bmi_arrays.py. Để tiện theo dõi, nó được hiển thị bên dưới:

def calc_bmi_arrays(sample_indices, hts, wts):

    # Gather sample heights and weights as arrays
    s_hts = hts[sample_indices]
    s_wts = wts[sample_indices]

    # Convert heights from cm to m and square with broadcasting
    s_hts_m_sqr = (s_hts / 100) ** 2

    # Calculate BMIs as an array using broadcasting
    bmis = s_wts / s_hts_m_sqr

    return bmis

Lưu ý rằng hàm này thực hiện mọi phép tính cần thiết bằng các mảng.

Hãy xem liệu cách tiếp cận dùng mảng được cập nhật này có giúp giảm mức sử dụng bộ nhớ hay không:

  • Nạp gói memory_profiler vào phiên IPython của bạn.
  • Import calc_bmi_arrays từ bmi_arrays.
  • Sau khi hoàn tất các bước trên, dùng %mprun để profile hàm calc_bmi_arrays() trên dữ liệu siêu anh hùng của bạn. Các mảng sample_indices, htswts đã được nạp vào phiên của bạn.

Sau khi bạn viết mã xong, hãy trả lời câu hỏi sau:

Các dòng mã lập chỉ mục mảng và broadcasting trong hàm calc_bmi_array() tiêu tốn bao nhiêu bộ nhớ? (tức là tổng cộng của cột Increment cho bốn dòng mã này là bao nhiêu?)

Bài tập này là một phần của khóa học

Viết mã Python hiệu quả

Xem khóa học

Bài tập tương tác thực hành

Biến lý thuyết thành hành động với một trong các bài tập tương tác của chúng tôi

Bắt đầu bài tập