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爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 Python
浅谈python迭代器
Nov 08 Python
python如何去除字符串中不想要的字符
Jul 05 Python
python版飞机大战代码分享
Nov 20 Python
python的继承知识点总结
Dec 10 Python
对python调用RPC接口的实例详解
Jan 03 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
Python基于Socket实现简单聊天室
Feb 17 Python
Python 使用生成器代替线程的方法
Aug 04 Python
Python绘制词云图之可视化神器pyecharts的方法
Feb 23 Python
django注册用邮箱发送验证码的实现
Apr 18 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
合作指挥官:孟斯克
2020/03/16 星际争霸
php 三维饼图的实现代码
2008/09/28 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
php给图片添加文字水印方法汇总
2015/08/27 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
JavaScript arguments 多参传值函数
2010/10/24 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
微信小程序云开发之数据库操作
2019/05/18 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
python带参数打包exe及调用方式
2019/12/21 Python
南京某公司笔试题
2013/01/27 面试题
党员先进性教育整改措施
2014/09/18 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
2015年资料员工作总结
2015/04/25 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js
Nginx安装配置详解
2022/06/25 Servers