Jupyter Notebook中%time和%timeit的使用详解

 更新时间:2023年02月27日 09:36:58   作者:宁萌Julie  
本文主要介绍了Jupyter Notebook中%time和%timeit的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文介绍 Jupyter Notebook 中用于计算运行时间的魔法命令 ( magic commands ) %time 和 %timeit 。

1.%time 或 %timeit:计算当前行的代码运行时间。

%time 的计算结果包括:CPU time(CPU运行程序的时间), Wall time(Wall Clock Time,墙上挂钟的时间,也就是我们感受到的运行时间)。

%timeit 计时更为精确,这一命令会运行代码 r 次,每次 n 遍,再对 n*r 遍的结果取平均后,得到运行一遍代码的时间。

举个例子来看看吧,以列表的循环计算为例,先看 %time 的计算:

nums1=list(range(10000))
%time nums2=[i+5 for i in nums1]

这里我们用 %time 计算一下第二行代码,也就是对列表中每个元素的值加 5 的运行时间,结果为:

Wall time: 998 µs

我的电脑上不知怎么回事,只显示了 Wall time 。

再来看 %timeit 的计算:

nums1=list(range(10000))
%timeit nums2=[i+5 for i in nums1]

结果为:

645 µs ± 45.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

如上所示,使用 %timeit 计时会运行 r 次(默认值 r=7), 每一次运行 n 遍的 n 则是由系统根据代码确定一个合适的值,这里 n=1000,最后对所有计时结果取平均得到运行一遍代码的时间。

也可以使用 %timeit -r R -n N,以自定义的设置(运行R次,每一次N遍)来运行代码并计时。例如:

nums1=list(range(10000))
%timeit -r 5 -n 400 nums2=[i+5 for i in nums1]

就是对代码运行 5 次, 每次 400 遍,最后对所有计时结果取平均,得到运行一遍代码的时间。结果如下:

705 µs ± 60.1 µs per loop (mean ± std. dev. of 5 runs, 400 loops each)

2.%%time 或 %%timeit:计算当前单元(cell)的代码运行时间。

%%time 与 %time , %%timeit 与 %timeit 的计算方式相同,区别在于 % 是用于单行代码的命令,%% 是应用于当前单元的命令。

需要注意的是,%%time 或者 %%timeit 必须在当前单元的第一行。 并且,%%time 后不能跟代码。例如:

%%time 
nums1=list(range(10000))
nums2=[i+5 for i in nums1]

结果为:

Wall time: 1.99 ms

%%timeit 后面可以跟代码,这行代码会运行、但不会计入时间,从第二行开始计时。例如:

%%timeit nums1=list(range(10000))
nums2=[i+5 for i in nums1]

结果为:

685 µs ± 47 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

可以看到,这一结果与前面使用行命令 %timeit 的结果相近,因为 %%timeit 之后的代码nums1=list(range(10000)) 运行但是不计时。

再来看看 %%timeit 单独放在第一行的结果:

%%timeit 
nums1=list(range(10000))
nums2=[i+5 for i in nums1]

结果为:

800 µs ± 52 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

这种情况下,会对代码 nums1=list(range(10000)) 计时,因此运行时间更长一点。

参考:

1.Ipython帮助文档对于 %time 和 %timeit的讲解

2.stackoverflow关于 %timeit 的一个问答,介绍了 %timeit 和 %%timeit

到此这篇关于Jupyter Notebook中%time和%timeit的使用详解的文章就介绍到这了,更多相关Jupyter Notebook %time和%timeit内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python绘制世界疫情地图详解

    基于Python绘制世界疫情地图详解

    这篇文章主要介绍了如何使用Python绘制世界疫情地图,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • python怎么对数字进行过滤

    python怎么对数字进行过滤

    在本篇内容中小编给大家整理的是关于python怎么对数字进行过滤的实例方法内容,需要的朋友们可以参考下。
    2020-07-07
  • 对Django的restful用法详解(自带的增删改查)

    对Django的restful用法详解(自带的增删改查)

    今天小编就为大家分享一篇对Django的restful用法详解(自带的增删改查),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python检测空间储存剩余大小和指定文件夹内存占用的实例

    python检测空间储存剩余大小和指定文件夹内存占用的实例

    今天小编就为大家分享一篇python检测空间储存剩余大小和指定文件夹内存占用的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python正则抓取网易新闻的方法示例

    Python正则抓取网易新闻的方法示例

    这篇文章主要介绍了Python正则抓取网易新闻的方法,结合实例形式较为详细的分析了Python使用正则进行网易新闻抓取操作的相关实现技巧与注意事项,需要的朋友可以参考下
    2017-04-04
  • python数据类型之间怎么转换技巧分享

    python数据类型之间怎么转换技巧分享

    在本篇文章里小编给大家分享的是关于python数据类型之间怎么转换实例以及小技巧内容,有兴趣的朋友们参考下。
    2019-08-08
  • 浅谈python常用程序算法

    浅谈python常用程序算法

    这篇文章主要介绍了python常用程序算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 用python发送微信消息

    用python发送微信消息

    这篇文章主要介绍了用python发送微信消息的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python如何实现复制目录到指定目录

    python如何实现复制目录到指定目录

    这篇文章主要为大家介绍了python如何实现复制目录到指定目录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Python演化计算基准函数详解

    Python演化计算基准函数详解

    这篇文章主要介绍了Python演化计算基准函数,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧,希望能够给你带来帮助
    2021-10-10

最新评论