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 相关文章推荐
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
python实现用户答题功能
Jan 17 Python
numpy向空的二维数组中添加元素的方法
Nov 01 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
简单了解python反射机制的一些知识
Jul 13 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
Python socket非阻塞模块应用示例
Sep 12 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
python标准库os库的函数介绍
Feb 12 Python
python实现b站直播自动发送弹幕功能
Feb 20 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调用新浪短链接API的方法
2014/11/08 PHP
php截取视频指定帧为图片
2016/05/16 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
php 多文件上传的实现实例
2016/10/23 PHP
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
python 调用HBase的简单实例
2016/12/18 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
python版本五子棋的实现代码
2018/12/11 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
python复合条件下的字典排序
2020/12/18 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
5s推行计划书
2014/05/06 职场文书
欢迎领导标语
2014/06/27 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
白银帝国观后感
2015/06/17 职场文书