เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การใช้ %mprun: ค่า BMI ของฮีโร่

เราต้องการคำนวณดัชนีมวลกาย (BMI) สำหรับกลุ่มตัวอย่างของฮีโร่ โดยใช้สูตรต่อไปนี้:

BMI = mass(kg) / height(m)^2

ได้โหลดกลุ่มตัวอย่างสุ่มของซูเปอร์ฮีโร่จำนวน 25,000 คนไว้ในเซสชันแล้ว ในรูปแบบ array ชื่อ sample_indices ซึ่งเป็นรายการ ดัชนี ที่ชี้ไปยังตำแหน่งของฮีโร่แต่ละคนในรายการ heroes

นอกจากนี้ยังมีฟังก์ชันชื่อ calc_bmi_lists ที่บันทึกไว้ในไฟล์ชื่อ bmi_lists.py สำหรับอ้างอิง แสดงโค้ดไว้ด้านล่าง:

def calc_bmi_lists(sample_indices, hts, wts):

    # Gather sample heights and weights as lists
    s_hts = [hts[i] for i in sample_indices]
    s_wts = [wts[i] for i in sample_indices]

    # Convert heights from cm to m and square with list comprehension
    s_hts_m_sqr = [(ht / 100) ** 2 for ht in s_hts]

    # Calculate BMIs as a list with list comprehension
    bmis = [s_wts[i] / s_hts_m_sqr[i] for i in range(len(sample_indices))]

    return bmis

สังเกตว่าฟังก์ชันนี้ทำการคำนวณทั้งหมดโดยใช้ list comprehension (จึงเป็นที่มาของชื่อ calc_bmi_lists()) ลองเจาะลึกฟังก์ชันนี้และวิเคราะห์การใช้หน่วยความจำในการคำนวณด้วย list:

  • โหลดแพ็กเกจ memory_profiler เข้าสู่เซสชัน IPython
  • import calc_bmi_lists จาก bmi_lists
  • เมื่อดำเนินการขั้นตอนข้างต้นเรียบร้อยแล้ว ให้ใช้ %mprun เพื่อโปรไฟล์ฟังก์ชัน calc_bmi_lists() กับข้อมูลซูเปอร์ฮีโร่ โดย array hts และ wts ได้โหลดไว้ในเซสชันแล้ว

เมื่อเขียนโค้ดเสร็จแล้ว ให้ตอบคำถามต่อไปนี้:

โค้ดในส่วน list comprehension ของฟังก์ชัน calc_bmi_lists() ใช้หน่วยความจำรวมเท่าใด (กล่าวคือ ผลรวมของคอลัมน์ Increment ทั้งสี่บรรทัดนั้นเท่ากับเท่าใด?)

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียน Python Code ที่มีประสิทธิภาพ

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำจริง

เปลี่ยนทฤษฎีให้เป็นการลงมือทำด้วยแบบฝึกหัดเชิงโต้ตอบหนึ่งในของเรา

เริ่มแบบฝึกหัด