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 xsl文件生成html文件存储示例讲解
Dec 03 Python
python对字典进行排序实例
Sep 25 Python
构建Python包的五个简单准则简介
Jun 15 Python
python解析含有重复key的json方法
Jan 22 Python
python使用mitmproxy抓取浏览器请求的方法
Jul 02 Python
Django如何实现上传图片功能
Aug 16 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
Python各种扩展名区别点整理
Feb 27 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
Mar 12 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
利用PyTorch实现VGG16教程
Jun 24 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实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Django Rest framework频率原理与限制
2019/07/26 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
python对XML文件的操作实现代码
2020/03/27 Python
浅谈python 类方法/静态方法
2020/09/18 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
安全宣传标语
2014/06/10 职场文书
2014年终个人总结报告
2015/03/09 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
预备党员群众意见
2015/06/01 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android