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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 总结网络IO模型与select模型的Python实例讲解

    总结网络IO模型与select模型的Python实例讲解

    同步、异步、阻塞、非阻塞,当这些网络IO名词堆到一起时难免使编程初学者感到困惑,这里我们就来为大家总结网络IO模型与select模型的Python实例讲解:
    2016-06-06
  • python中的线程threading.Thread()使用详解

    python中的线程threading.Thread()使用详解

    这篇文章主要介绍了python中的线程threading.Thread()使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Django中使用Celery的方法示例

    Django中使用Celery的方法示例

    这篇文章主要介绍了Django中使用Celery的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • python打开url并按指定块读取网页内容的方法

    python打开url并按指定块读取网页内容的方法

    这篇文章主要介绍了python打开url并按指定块读取网页内容的方法,涉及Python操作URL及网页内容的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Python 数据结构之队列的实现

    Python 数据结构之队列的实现

    这篇文章主要介绍了Python 数据结构之队列的实现的相关资料,需要的朋友可以参考下
    2017-01-01
  • python实现rsa加密实例详解

    python实现rsa加密实例详解

    这篇文章主要介绍了python实现rsa加密实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • 如何解决import torchvision报错问题 DLL:找不到模块

    如何解决import torchvision报错问题 DLL:找不到模块

    这篇文章主要介绍了如何解决import torchvision报错问题 DLL:找不到模块,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • python Ajenti控制面板轻松地管理所有服务器网站

    python Ajenti控制面板轻松地管理所有服务器网站

    Ajenti是一个值得拥有的管理面板,免费开源的管理面板工具,可以帮助你集中管理多个服务器和网站,Ajenti 支持 Linux、BSD、Mac OS X和Windows 等多个操作系统,并且可以通过一个直观的 Web 界面来完成各种系统管理任务
    2024-01-01
  • 基于python实现图书管理系统

    基于python实现图书管理系统

    这篇文章主要为大家详细介绍了基于python实现图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • python中利用xml.dom模块解析xml的方法教程

    python中利用xml.dom模块解析xml的方法教程

    这篇文章主要给大家介绍了关于python中利用xml.dom模块解析xml的方法教程,文中通过示例代码介绍的非常详细,相信对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05

最新评论