python运行时间的几种方法


Posted in Python onJune 17, 2016

最早见过手写的,类似于下面这种:

import datetime
 def time_1():

 begin = datetime.datetime.now()

 sum = 0

 for i in xrange(10000000):

  sum = sum + i

 end = datetime.datetime.now()

 return end-begin
print time_1()

输出如下: 

➜  Python python time_1.py

0:00:00.280797

另外一种方法是使用timeit模块,使用方法如下:

In [5]: import timeit
In [6]: timeit.timeit("sum(range(100))")
Out[6]: 1.2272648811340332

还可以在命令行上使用这种timeit模块,如下:

➜ Python python -m timeit -s"import time_1 as t" "t.time_1()"
0:00:00.282044
10 loops, best of 3: 279 msec per loop

注意:timeit模块会多次运行程序以获得更精确的时间,所以需要避免重复执行带来的影响。比方说x.sort()这种操作,因为第一次执行之后,后边已经是排好的了,准确性就收到了影响。
 还有一种方法是使用cProfile模块,代码如下,名字为time_1.py:

import datetime

 def time_1():

 begin = datetime.datetime.now()

 sum = 0

 for i in xrange(10000000):

  sum = sum + i

 end = datetime.datetime.now()

 return end-begin



 if __name__ == '__main__':

 print time_1()

import cProfile

 cProfile.run('time_1()')
 

运行程序结果如下: 

➜ Python python time_1.py

0:00:00.282828

  2 function calls in 0.000 seconds 

 Ordered by: standard name

 ncalls tottime percall cumtime percall filename:lineno(function)

 1 0.000 0.000 0.000 0.000 <string>:1(<module>)

 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}

Traceback (most recent call last):

 File "time_1.py", line 15, in <module>

 cProfile.run('main()')

 File "/usr/lib/python2.7/cProfile.py", line 29, in run

 prof = prof.run(statement)

 File "/usr/lib/python2.7/cProfile.py", line 135, in run

 return self.runctx(cmd, dict, dict)

 File "/usr/lib/python2.7/cProfile.py", line 140, in runctx

 exec cmd in globals, locals

 File "<string>", line 1, in <module>

NameError: name 'main' is not defined

➜ Python vi time_1.py

➜ Python python time_1.py

0:00:00.284642

  5 function calls in 0.281 seconds

 Ordered by: standard name

 ncalls tottime percall cumtime percall filename:lineno(function)

 1 0.000 0.000 0.281 0.281 <string>:1(<module>)

 1 0.281 0.281 0.281 0.281 time_1.py:3(time_1)

 2 0.000 0.000 0.000 0.000 {built-in method now}

 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}

一开始代码里最后一行写的是cProfile.run('main()'),提示没有main(),将main()改成函数名字就可以了。

以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。

Python 相关文章推荐
python学习数据结构实例代码
May 11 Python
python实现自动登录人人网并采集信息的方法
Jun 28 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 Python
python内存动态分配过程详解
Jul 15 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
python主线程与子线程的结束顺序实例解析
Dec 17 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 Python
django学习之ajax post传参的2种格式实例
May 14 Python
Python OpenCV实现图形检测示例详解
Apr 08 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 #Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 #Python
最大K个数问题的Python版解法总结
Jun 16 #Python
Python中的多行注释文档编写风格汇总
Jun 16 #Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 #Python
浅谈Python中chr、unichr、ord字符函数之间的对比
Jun 16 #Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 #Python
You might like
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python中非常实用的一些功能和函数分享
2015/02/14 Python
举例介绍Python中的25个隐藏特性
2015/03/30 Python
python字典操作实例详解
2017/11/16 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python如何使用unittest测试接口
2018/04/04 Python
python对html过滤处理的方法
2018/10/21 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
服装厂厂长岗位职责
2013/12/27 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
2014年教研工作总结
2014/12/06 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
文书工作总结(范文)
2019/07/11 职场文书
python实现简易名片管理系统
2021/04/11 Python
MySQL 逻辑备份 into outfile
2022/05/15 MySQL