1. Learn
  2. /
  3. 课程
  4. /
  5. 高效编写 Python 代码

Connected

道练习

使用 %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 列表推导这一行代码耗时占比是多少?

说明

50 XP

答案选项