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支持断点续传的多线程下载示例
Jan 16 Python
在Python中调用ggplot的三种方法
Apr 08 Python
在Python中处理字符串之isdigit()方法的使用
May 18 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
May 11 Python
如何优雅地处理Django中的favicon.ico图标详解
Jul 05 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
Aug 31 Python
python+selenium实现简历自动刷新的示例代码
May 20 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 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
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
PHP中Array相关函数简介
2016/07/03 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
javascript生成随机颜色示例代码
2014/05/05 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
js的三种继承方式详解
2017/01/21 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
Python文件操作基础流程解析
2020/03/19 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
python之语音识别speech模块
2020/09/09 Python
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
P/Invoke是什么
2015/07/31 面试题
MIS软件工程师的面试题
2016/04/22 面试题
2014年单位植树节活动方案
2014/03/23 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
机械生产实习心得体会
2016/01/22 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android
Java实现学生管理系统(IO版)
2022/02/24 Java/Android
i7 6700处理器相当于i5几代
2022/04/19 数码科技