文章目录

  • 背景
  • time
  • timeit

背景

看了一些人的,他们要么例子定义得太复杂要么没有说清楚。

所以我们举两个简单的例子分别感受一下这两个函数(magic function),然后说一下我自己的理解,这样可以让你知道来龙去脉,有错误欢迎指出。

我们打开jupyter notebook。

time

先定义如下一个变量,

n = 1000000

然后执行下面的代码。

%time sum(range(n))

结果:

可以看到,显示的是wall time,很多童鞋不知道这个东西是什么,解释如下:

In practical computing, wall time is the actual time, usually measured in seconds, that a program takes to run or to execute its assigned tasks.

wall time的来源是因为以前有一种钟表叫做wall clock,挂钟,因而得名。

有一个问题,为什么不直接这样测试程序运行时间呢?如下:

import time
n = 1000000
t1=time.time()
sum(range(n))
t2=time.time()
print("总用时:",t2-t1)


可以发现,0.02s,也就是200ms,比上面多得多。这是为什么呢?

因为计算机并不止在执行你这个python程序,现在的操作系统大多都是多任务处理系统,其需要时分复用,并行处理其他程序,因而你的这个程序执行了一小会就可能会停下来(挂起),然后执行其他程序。而wall time的好处就在于就只统计了这一个python程序的运行时间,不会包括挂起等待时间。

timeit

先定义如下一个变量

a=1

然后执行如下代码:

%timeit a==1

首先,不看结果,我们应该可以猜到,执行a==1速度是非常快的,会在纳秒级别。

结果如下:

29.3ns。

解释,这个命令的运行过程如下(伪代码):

#时间列表=[]
for i in range(7):for j in range(10000000):a==1#10000000个loop的总运行时间为t,tt=t/10000000,即得到了一次loop的运行时间。#时间列表.append(tt)
#计算时间列表的均值和方差,于是得到上面的29.3 ns ± 0.389 ns

当然了,实际运行中是没有for循环的,众所周知python的for循环会比较慢,%timeit应该是优化版本的。上面我只是打个比方,让你看清楚%timeit是如何工作的。

因此,叫做7 runs,每一个run 执行10000000次循环。

补充:

这个7 runs是默认的7次,但是10000000次循环这个不是默认的,ipython会根据你后面测试的那个程序自我调节,有的时候你会看到是100万,有的时候10万,有的时候10000万。

不过不用担心,这两个参数都是你可以自己设置的,如下:

%timeit -r 5 -n 10000 a==1

参考:https://ipython.readthedocs.io/en/stable/interactive/magics.html


完结撒花


深入理解IPyton以及Jupyter Notebook中的%time以及%timeit的作用相关推荐

  1. Jupyter Notebook中numpy什么意思 import numpy as np详解

    Jupyter Notebook中numpy什么意思 import numpy as np详解 1.Numpy是啥 Numpy是用C实现的数据计算库. 主要是用来处理相同类型.固定长度的元素,可以用来 ...

  2. pandas使用set_table_attributes函数、display_html函数等在jupyter notebook中并排显示两个dataframe的内容(side by side)

    pandas使用set_table_attributes函数.display_html函数等在jupyter notebook中并排显示两个dataframe的内容(side by side) 目录

  3. Jupyter Notebook中cell操作

    Jupyter Notebook中cell操作 cell:一对In Out会话被视作一个代码单元,称为cell Jupyter有三种cell类型: Code(编辑代码,运行后显示代码运行结果) Mar ...

  4. jupyter notebook中执行命令报错No module named ‘wordcloud‘

    from wordcloud import WordCloud cloud = WordCloud(width=1440, height=1080).generate(" ".jo ...

  5. 如何在Jupyter notebook中运行python的.py文件,以及ipynb文件与py文件的相互转化

    文章目录: 1 Jupyter notebook中%开头的一些方法使用 1.1 运行python的py文件 1.2 加载本地文件 2 ipynb文件与py文件的相互转化 2.1 jupyter not ...

  6. jupyter notebook中忽略所有警告,让页面更整洁

    jupyter notebook 中忽略所有警告 import warnings warnings.filterwarnings("ignore")

  7. 如何在Jupyter Notebook中使用在anaconda中创建的虚拟环境

    如何在Jupyter Notebook中使用在anaconda中创建的虚拟环境 1.创建虚拟环境并激活 conda create -n 虚拟环境名 python = 3.8 conda activat ...

  8. ipython jupyter区别_ipython jupyter notebook中显示图像和数学公式实例

    1. # 可以使用LaTeX表示数学公式 # 可以使用LaTeX表示数学公式 from IPython.display import Latex Latex(r"$\sqrt{x^2+y^2 ...

  9. ubuntu怎么在jupyter notebook中引入anaconda虚拟环境

    ubuntu怎么在jupyter notebook中引入anaconda虚拟环境 ~坑: 先activate visaul envirument 再打开jupyter notebook 是不行的 co ...

最新文章

  1. 用g ++编译C ++ 11
  2. BufferedReader_字符缓冲输入流
  3. python3 set_python3.x 基础三:set集合
  4. tomcat 拦截指定url_一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了
  5. java 中文 音序,java 中文字符串数组按照音序排列
  6. kubernets1.52安装文档
  7. express中的错误处理
  8. java 基本数据类型 容器_Java 基本数据类型
  9. spark生态及各个功能
  10. python测试用例队列_Python tornado队列示例-一个并发web爬虫代码分享
  11. 记录贴,使用PDFviewer时遇到的导入问题
  12. 如何汉化eclipse
  13. LabVIEW编程LabVIEW开发 常用运动控制器比较
  14. 对于拖延症的最好方法
  15. 石头剪刀布程序流程图_民间传统体育游戏 | 石头剪刀布
  16. 程序员那些必须熬过去的坎!!
  17. 岩板铺地好吗_岩板铺客厅地面好吗 比800*800的瓷砖更美观又大气?
  18. 【技术晨读】EAV or JSON
  19. 1.9 闭区间上连续函数的性质
  20. 实时更新:TIOBE世界编程语言排行榜(2021年11月份)

热门文章

  1. 2021 倒计时,编程日历倒计时,但伟大与经典历久弥新
  2. 数据结构为什么重要?
  3. 使用ROS和TensorFlow进行深度学习
  4. 深度学习4:使用MNIST数据集(tensorflow)
  5. AAAI2022最新「关系数据因果推理」报告,181页PPT阐述因果推理在网络数据中研究进展...
  6. 清华大学《大数据系统基础》项目征集说明(2021年秋季)
  7. 数博前沿 | 企业数据应用:聚焦场景,打通“最后一公里”
  8. 郭毅可教授在线受聘清华大学杰出访问教授并举行学术报告会
  9. 斯坦福的智能马桶能凭肛纹识人,大便和尿液都把你的信息“卖”了……
  10. 报名 | 赢取20万美金!Call For Code编程马拉松北京站来袭!