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

การใช้ %mprun: Hero BMI 2.0

มาดูกันว่าการเปลี่ยนวิธีคำนวณค่า BMI จะช่วยประหยัดหน่วยความจำได้หรือไม่ อย่างที่ทราบกัน ความสูงและน้ำหนักของฮีโร่แต่ละคนถูกเก็บไว้ใน numpy array ดังนั้นจึงสามารถใช้การ indexing และ broadcasting ของ NumPy ในการคำนวณได้ มีฟังก์ชันชื่อ calc_bmi_arrays ถูกสร้างและบันทึกไว้ในไฟล์ชื่อ bmi_arrays.py ดังที่แสดงด้านล่าง:

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

สังเกตว่าฟังก์ชันนี้ทำการคำนวณทั้งหมดโดยใช้arrays

มาดูว่าการใช้ array แบบนี้จะช่วยลด memory footprint ได้หรือไม่:

  • โหลดแพ็กเกจ memory_profiler เข้าสู่ IPython session
  • import calc_bmi_arrays จาก bmi_arrays
  • เมื่อดำเนินการขั้นตอนข้างต้นเสร็จแล้ว ให้ใช้ %mprun เพื่อ profile ฟังก์ชัน calc_bmi_arrays() กับข้อมูลซูเปอร์ฮีโร่ของคุณ array sample_indices, hts และ wts ถูกโหลดเข้าสู่ session แล้ว

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

บรรทัดโค้ดที่ทำ array indexing และ broadcasting ในฟังก์ชัน calc_bmi_array() ใช้หน่วยความจำรวมเท่าไร (กล่าวคือ ผลรวมทั้งหมดของคอลัมน์ Increment สำหรับสี่บรรทัดนี้คือเท่าใด)?

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

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

ดูคอร์ส

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

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

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