%lprun を使う:ボトルネックを見つける
関数をプロファイリングすると、ソースコードをより深く掘り下げて、ボトルネックを見つけられる可能性があります。特定の行が関数の実行時間の大半を占めている場合は、より効率的な別の手法に切り替える検討材料になります。
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 のリスト内包表記は何パーセントの時間を占めていますか?
この演習はコースの一部です
