Python Jupyter Notebook 中的代码性能评测丨数析学院

在 notebooke 中执行 %timeit 可以输出某个函数代码的性能测评结果:

Python Jupyter Notebook 中的代码性能评测丨数析学院_第1张图片
04ed

上面的结果是对函数执行时间的一个度量,它直接反映的是一个函数代码在某个固定时间中循环执行的次数。通常来说,同样效果的代码loops之前的数字越大,代码的执行时间就越短,性能也越高。

在 notebooke 中执行 %%timeit 则可以方便我们整体考察一个代码段的执行时间:

Python Jupyter Notebook 中的代码性能评测丨数析学院_第2张图片
05ed

可以发现,相比于我们的前一段代码,这段代码的执行时间要漫长得多。接下来,我们将教大家一些方法来改变评测结果的输出格式:
Python Jupyter Notebook 中的代码性能评测丨数析学院_第3张图片
06ed

上面为我们之前用过的 %timeit 命令,将其改为 %timeit ,并加上一些说明文字,会是代码执行时间评测的输出结果更为丰满。

例如我们现在来测评一下一个排序函数的执行时间,首先是对于一个无序列表的排序:

Python Jupyter Notebook 中的代码性能评测丨数析学院_第4张图片
07ed

接下来,我们考察一下用同样的函数对一个已经排好序的列表进行排序的执行时间情况:
Python Jupyter Notebook 中的代码性能评测丨数析学院_第5张图片
08ed

上面两段代码的输出结果都包含了 CPU times 与 Wall times 两项,分别表示算法执行的CPU时间与网络挂钟时间。可以看到,对于已经排好序的列表,执行排序算法所需花费的时间要明显短得多。

与 %%timeit 类似的道理,执行 %%time 也可以方便我们整体考察一个代码段的执行时间:

Python Jupyter Notebook 中的代码性能评测丨数析学院_第6张图片
09ed

执行 %prun 命令,可以在 notebooke 中更为详细地查看关于代码执行时间的信息:
Python Jupyter Notebook 中的代码性能评测丨数析学院_第7张图片
10ed

我们将在底部的弹窗中看到以下内容,它很详细地告诉了我们函数中每一个步骤的执行时间:
Python Jupyter Notebook 中的代码性能评测丨数析学院_第8张图片
16ed

另外,在 notebooke 中执行 %load_ext 可以帮助我们快捷载入一些外部的分析器:

载入性能分析器 line_profiler

Python Jupyter Notebook 中的代码性能评测丨数析学院_第9张图片
12ed

载入内存分析器memory_profiler

Python Jupyter Notebook 中的代码性能评测丨数析学院_第10张图片
13ed

可以看到,这些分析器能够帮助我们了解包括内存占用等更多的信息。

此外,我们还可以用 %%file 命令将我们的算法作为py脚本保存,以方便我们执行魔法命令 %mprun 或 %lprun 来对算法性能进行分析:

Python Jupyter Notebook 中的代码性能评测丨数析学院_第11张图片
14ed

弹窗内容如下:
Python Jupyter Notebook 中的代码性能评测丨数析学院_第12张图片
15ed


复制链接,通过电脑学习效果最佳:http://datacademy.io/lesson/64

Python Jupyter Notebook 中的代码性能评测丨数析学院_第13张图片

你可能感兴趣的:(Python Jupyter Notebook 中的代码性能评测丨数析学院)