计算一个代码跑多久

文章目录

  • 1,time()
  • 2.timeit()
    • Timer()
    • 用法1:在命令行上运行
    • 用法2:在程序块中运行
    • 单位问题:

1,time()

import timestart = time.time()
xxx
xxx
end = time.time()
running_time = end-start
print('time cost : %.5f sec' %running_time)

输出时间默认为秒(对于时间太短可能无法很精确)
举例:
计算两个数/数组相加的时间

import timedef display_time(func):def wrapper(*args):t1 = time.time()print('answer = %.2f'%func(*args))t2 = time.time()print('time cost: %.6f'%(t2-t1))return wrapper@display_time            #使用装饰器的方法
def sum_(a,b):return (a+b)sum_(10,20)>>>answer = 30.00
>>>time cost: 0.004945

上面使用装饰器的方法可以参加笔者python教程第一部分12节

2.timeit()

1,python中文timeit
2,python 英文timeit
这里先看例题再看解析:

Timer()

from timeit import Timer  #导入Timerdef sum_(a,b):return (a+b)
‘’‘计算a+b的和画的时间,计算1000的总时间’‘’
t1 = Timer("sum_(10,20)","from __main__ import sum_")
print("time cost %.5f seconds\n"%t1.timeit(number=1000))

注意,上面是计算1000次的总时间,不是平均时间
上面的核心是:

t1 = Timer("sum_(10,20)","from __main__ import sum_")
class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)

Timer()函数第一个参数是statement(声明),必须是str类型,第二个参数是setup(安装),所以上面的含义是,计算sum_(10,20)即10+20的和,其中sum_函数从__main__中导入,需要注意的是,main()函数就是我们当前的程序。
再举个例子:

import timeitx = list(range(20000))#[0,1,2,3...19999]
#使用pop函数去除列表的第一个数
popzero = timeit.Timer("x.pop(0)","from __main__ import x")
#计算1000次花的时间
print(popzero.timeit(number=1000))#使用pop去除最后一个数
popend = timeit.Timer("x.pop()","from __main__ import x")
print(popend.timeit(number=1000))>>>0.012933371937833726
>>>0.00024989701341837645

上面的方法是用来计算pop()和pop(i)(i表示第i个数)的运行时间的
从时间复杂度而言,pop(i)是O(n),是pop()始终是O(1).所以pop(i)的时间要长一些。

————————以下为原文————————
timeit有两种用法,

用法1:在命令行上运行


在命令行上运行1+1,并计算时间。
上面-m不可少,表示在命令行将library module库像脚本一样运行,即在命令行运行程序。
上面100000000 loops表示运行了1亿次1+1,而best of 3表示调用了三次timeit()函数,每调用一次timeit()都运行1亿次循环。通过调用三次,其中最好的一次(时间最小)是每次循环花了0.00788 usec(微秒),所以总时间是:
1亿×0.00788×10−6秒=7.8秒1亿\times 0.00788\times 10^{-6} 秒=7.8秒1亿×0.00788×10−6秒=7.8秒
这个运行多少loops在命令行上是不确定的,系统自己根据运行来执行,一般而言,运行时间越小,loops次数越多。另外这个7.8秒实际上并不需要算出来,因为我们只看一次运行的时间,所以1+1运行花了0.00788微秒。
但是我们可以自己来给定运行的loops次数,

这里用到的-n 等命令如下:

-s表示开始只执行一次,在下面会说到

用法2:在程序块中运行

强烈建议看这篇博文,写的很细 https://www.cnblogs.com/hengyumo/p/10617018.html
如果只想粗略知道如何用,看我写的即可

from timeit import timeitprint(timeit('1+1',number=1000))


上面代码等价于

from timeit import timeit
x='''
1+1
'''
print(timeit(stmt=x,number=1000))

stmt表示statement,放入需要执行的表达式,多个表达式用;分开

这个时间算的是1000次执行的时间,单位的计算见下文
假如把number=去掉,

from timeit import timeit
x='''
1+1
'''
print(timeit(stmt=x))


时间反而变长了,这是因为默认number=106=10^6=106,即计算了10的6次方次,总的时间。

单位问题:

假如计算的时候写number=1,即表示计算的是一次,输出的也是一次计算的时间,单位是秒。当不写number的时候,默认number是等于10610^6106,即计算了10的6次方次的总时间,所以单位是微秒

from timeit import timeit
import time
s=time.time()
x=[i**2 for i in range(10000)]
e=time.time()
print('%.8f'%(e-s))
print(timeit('x=[i**2 for i in range(10000)]',number=1))


上面写了number=1,所以单位都是秒

from timeit import timeit
import time
s=time.time()
x=[i**2 for i in range(10000)]
e=time.time()
print('%.8f'%(e-s))
print(timeit('x=[i**2 for i in range(10000)]'))

不写number,单位是微秒,(这个时候因为要计算1000000次,所以很慢)
可能会经常看到博文用%timeit xxx的用法,这个是在ipython里直接用的,不需要像python里面需要import timeit
%在ipython里叫做line magic魔法行命令,%%为cell magic魔法单元命令

python time.time()计算代码运行时间相关推荐

  1. R语言统计代码运行耗时实战:计算代码运行时间、使用proc.time函数计算代码运行时间

    R语言统计代码运行耗时实战:计算代码运行时间.使用proc.time函数计算代码运行时间 目录

  2. 使用python装饰器计算函数运行时间的实例

    装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率 今天就来见识一下 python 装饰器,到底是怎么工作的. 本文主要是利用python装饰器计算函数运行时间 一些需 ...

  3. python计算时间装饰器_使用python装饰器计算函数运行时间的实例

    装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率 今天就来见识一下 python 装饰器,到底是怎么工作的. 本文主要是利用python装饰器计算函数运行时间 一些需 ...

  4. python历史性分布计算代码_量化交易中,如何使用Python计算「筹码分布」指标【附代码】 [量化小讲堂-64]...

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总] 请点击此处 这是邢不行第  64 ...

  5. python 图像iou_如何通过python实现IOU计算代码实例

    Intersection over Union(IOU)是一种测量在特定数据集中检测相应物体准确度的一个标准.IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding boxes) ...

  6. php计算代码运行时间与内存使用的一段代码

    计算运行时间及内存使用,代码如下: <?php //开始计时 $HeaderTime = microtime(true);//参数true表示返回浮点数值//代码//...printf(&quo ...

  7. 使用console进行 性能测试 和 计算代码运行时间

    对于前端开发人员,在开发过程中经常需要监控某些表达式或变量的值,如果使用用 debugger 会显得过于笨重,最常用的方法是会将值输出到控制台上方便调试. 最常用的语句就是console.log(ex ...

  8. js 使用console计算代码运行时间

    需求 如果学习前端一定时间以后,就会考虑性能方面的问题.那么问题来了,我们怎么计算出一段代码的运行时间呢? 使用console.log配合Date对象计算 比如,我们计算sort方法排序十万个随机数组 ...

  9. python连续质数计算代码分析,素性测试的Miller-Rabin算法完全解析 (C语言实现、Python实现)...

    因为文中存在公式,只能用图片方式上传了! 以下为C语言源代码: #include typedef long long unsigned LLU; typedef int BOOL; #define T ...

最新文章

  1. 检查用户显示器的分辨率
  2. AcWing 199. 余数之和 (除法分块)打卡
  3. 关于引用传递的测试题
  4. 北斗导航 | 从北一到北二再到北三,你应该知道的北斗导航系统
  5. 十三、深入Java的Scanner类
  6. html div box,html – 为转换后的div添加box-shadow
  7. 【Matlab】利用matlab画圆
  8. Word删除连续分节符
  9. 计算机中硬盘和移动硬盘的区别,笔记本硬盘和移动硬盘有什么区别
  10. 【技术认证介绍】阿里云认证介绍
  11. c语言if语句后的一对圆括号,在C语言中,紧跟在关键字if后一对圆括号里的表达式()...
  12. Canvas模拟太阳地球月球的运动过程
  13. 打开ssh通道是什么意思_PP助手里有一个“打开SSH通道”SHH是什么?能干什么?...
  14. (找规律)23,41,18,64,? 问号处填什么?
  15. MInesweeper
  16. 项目管理project模板_项目经理必备的6款项目管理软件
  17. 聚乙烯原料最新价格 聚丙烯价格多少钱一吨?
  18. 戴尔服务器硬盘监控软件,Hp Dell服务器硬件监控
  19. 开发者专属话题来袭,2023 亚马逊云科技中国峰会开发者大讲堂即将开讲!
  20. Kubeadm 在线快速部署 1.23 单master集群 【实验用】

热门文章

  1. 负离子发生器模块 ANION GENERATOR
  2. 搜java题的公众号_java搜题公众号
  3. android呼吸灯动画,Android高德地图自定义定位蓝点实现呼吸灯功能
  4. dede 表单必填_织梦dedecms自定义表单选项必填怎么修改
  5. java finally块_Java中的finally块是什么?
  6. python3 collections模块_Python3之collections模块
  7. java dolayout,Component
  8. java kryo 序列化_java中的序列化方式及dubbo使用kryo序列化
  9. 学而思python_感恩遇到学而思网校,让我找到做老师的使命感和成就感
  10. 如何得到iterator的当前元素_Java中迭代器Iterator详解