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创建XML文档
Mar 01 Python
python批量修改文件名的实现代码
Sep 01 Python
python监控网站运行异常并发送邮件的方法
Mar 13 Python
python实现将元祖转换成数组的方法
May 04 Python
Python实现excel转sqlite的方法
Jul 17 Python
python利用MethodType绑定方法到类示例代码
Aug 27 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
python3 logging日志封装实例
Apr 08 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
python 读取、写入txt文件的示例
Sep 27 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
linux下 C语言对 php 扩展
2008/12/14 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
php显示时间常用方法小结
2015/06/05 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
一个js实现的所谓的滑动门
2007/05/23 Javascript
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python调用java的jar包方法
2018/12/15 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
某公司的.net工程师面试题笔试题
2013/11/22 面试题
九年级英语教学反思
2014/01/31 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
中学生评语大全
2014/04/18 职场文书
助残日活动总结
2014/08/27 职场文书
2014年德育工作总结
2014/11/20 职场文书
自主招生英文自荐信
2015/03/25 职场文书
党员转正申请报告
2015/05/15 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
导游词之天津盘山
2019/11/01 职场文书