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的shutil模块中文件的复制操作函数详解
Jul 05 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
django中的HTML控件及参数传递方法
Mar 20 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
Apr 10 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
Python3.9又更新了:dict内置新功能
Feb 28 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
使用Python构造hive insert语句说明
Jun 06 Python
python编程实现清理微信重复缓存文件
Nov 01 Python
Python 一键获取电脑浏览器的账号密码
May 11 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
paypal即时到账php实现代码
2010/11/28 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
php如何获取Http请求
2020/04/30 PHP
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
如何运行带参数的python脚本
2019/11/15 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
酒店实习个人鉴定
2013/12/07 职场文书
烹饪自我鉴定
2014/03/01 职场文书
大班开学家长寄语
2014/04/04 职场文书
教师考核评语
2014/04/28 职场文书
中队活动总结
2014/08/27 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
检讨书格式范文
2015/05/07 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS