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通过scapy获取局域网所有主机mac地址示例
May 04 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
python 生成器和迭代器的原理解析
Oct 12 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
python中count函数简单用法
Jan 05 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
Python如何输出警告信息
Jul 30 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 empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
细说webpack6 Babel的使用详解
2019/09/26 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
Python 时间处理datetime实例
2008/09/06 Python
Python实现Linux命令xxd -i功能
2016/03/06 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
python实现最大优先队列
2019/08/29 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
中间件分为哪几类
2016/09/18 面试题
课程设计心得体会
2013/12/28 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
西安兵马俑导游词
2015/02/02 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js