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

ได้โหลดกลุ่มตัวอย่างสุ่มของซูเปอร์ฮีโร่จำนวน 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()กับข้อมูลซูเปอร์ฮีโร่ โดย arrayhtsและwtsได้โหลดไว้ในเซสชันแล้ว
เมื่อเขียนโค้ดเสร็จแล้ว ให้ตอบคำถามต่อไปนี้:
โค้ดในส่วน list comprehension ของฟังก์ชัน calc_bmi_lists() ใช้หน่วยความจำรวมเท่าใด (กล่าวคือ ผลรวมของคอลัมน์ Increment ทั้งสี่บรรทัดนั้นเท่ากับเท่าใด?)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียน Python Code ที่มีประสิทธิภาพ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำจริง
เปลี่ยนทฤษฎีให้เป็นการลงมือทำด้วยแบบฝึกหัดเชิงโต้ตอบหนึ่งในของเรา
เริ่มแบบฝึกหัด