การใช้ %lprun: ค้นหาจุดคอขวด
การ profile ฟังก์ชันช่วยให้เจาะลึกลงไปในโค้ดของฟังก์ชันนั้น และอาจค้นพบจุดคอขวดได้ เมื่อเห็นว่าบรรทัดใดบรรทัดหนึ่งใช้เวลาส่วนใหญ่ของฟังก์ชัน นั่นเป็นสัญญาณว่าควรลองใช้เทคนิคที่มีประสิทธิภาพมากกว่านี้
มาเจาะลึกฟังก์ชัน convert_units() กัน
def convert_units(heroes, heights, weights):
new_hts = [ht * 0.39370 for ht in heights]
new_wts = [wt * 2.20462 for wt in weights]
hero_data = {}
for i,hero in enumerate(heroes):
hero_data[hero] = (new_hts[i], new_wts[i])
return hero_data
โหลดแพ็กเกจ line_profiler เข้าสู่ IPython session จากนั้นใช้ %lprun เพื่อ profile ฟังก์ชัน convert_units() กับข้อมูลซูเปอร์ฮีโร่ของคุณ อย่าลืมใช้ syntax พิเศษสำหรับ %lprun (ต้องระบุ flag -f เพื่อบอกว่าต้องการ profile ฟังก์ชันใด)
ฟังก์ชัน convert_units(), รายการ heroes, อาร์เรย์ hts และ wts ถูกโหลดเข้า session แล้ว หลังจากเขียนโค้ดเสร็จ ให้ตอบคำถามต่อไปนี้:
บรรทัด list comprehension ของ new_hts ใช้เวลาคิดเป็นกี่เปอร์เซ็นต์เมื่อเทียบกับเวลาทั้งหมดที่ใช้ในฟังก์ชัน convert_units()?
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียน Python Code ที่มีประสิทธิภาพ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำจริง
เปลี่ยนทฤษฎีให้เป็นการลงมือทำด้วยแบบฝึกหัดเชิงโต้ตอบหนึ่งในของเรา
เริ่มแบบฝึกหัด