使用 %lprun:找出瓶頸
對函式進行效能剖析(profiling)可以更深入檢視其原始碼,並有機會找出效能瓶頸。當你看到某些程式碼行佔去了大多數的執行時間,就代表你可能需要改用不同且更有效率的方法。
來更深入看看 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 工作階段。接著,使用 %lprun 來為套用在超級英雄資料上的 convert_units() 函式進行剖析。記得要使用 %lprun 的特殊語法(你需要提供 -f 旗標來指定想要剖析的函式)。
convert_units() 函式、heroes 串列、hts 陣列與 wts 陣列都已載入到你的工作階段。完成程式碼後,請回答下列問題:
在 convert_units() 函式的總執行時間中,new_hts 這行串列生成大約花了多少百分比的時間?
本練習屬於課程
