Crossin的编程教室

标题: 【Python 第61课】 计时 [打印本页]

作者: crossin先生    时间: 2013-10-16 15:34
标题: 【Python 第61课】 计时
61timepic.jpg

Python中有一个time模块,它提供了一些与时间相关的方法。利用time,可以简单地计算出程序运行的时间。对于一些比较复杂、耗时较多的程序,可以通过这种方法了解程序中哪里是效率的瓶颈,从而有针对性地进行优化。

在计算机领域有一个特殊的时间,叫做epoch,它表示的时间是1970-01-01 00:00:00 UTC。
Python中time模块的一个方法
time.time()
返回的就是从epoch到当前的秒数(不考虑闰秒)。这个值被称为unix时间戳。

于是我们可以用这个方法得到程序开始和结束所用的时间,进而算出运行的时间:
  1. import time  
  2. starttime = time.time()
  3. print 'start:%f' % starttime
  4. for i in range(10):
  5.     print i
  6. endtime = time.time()  
  7. print 'end:%f' % endtime
  8. print 'total time:%f' % (endtime-starttime)
复制代码
在程序中的不同位置调用time.time()就可以得到运行到那个地方的时间,了解不同部分消耗的时间。

有了这个方法,我们还可以在Pygame课程中的打飞机游戏里,得到每一次游戏主循环刷新的时间,计算出游戏的每秒帧数,显示在屏幕上。

顺便再说下time中的另一个很有用的方法:
time.sleep(secs)

它可以让程序暂停secs秒。例如:
  1. import time
  2. print 1
  3. time.sleep(3)
  4. print 2
复制代码
在抓取网页的时候,适当让程序sleep一下,可以减少短时间内的请求,提高请求的成功率。

#==== Crossin的编程教室 ====#
微信ID:crossincode
论坛:http://crossin.me
QQ群:156630350

面向零基础初学者的编程课
每天5分钟,轻松学编程





作者: HTDI    时间: 2013-10-20 09:49
顶顶

作者: 建平    时间: 2013-10-20 18:05
今天来到编程教室,很开心!刚开始接触Python,希望和大家共同学习
作者: crossin先生    时间: 2013-10-20 21:48
建平 发表于 2013-10-20 18:05
今天来到编程教室,很开心!刚开始接触Python,希望和大家共同学习

欢迎
作者: liu-pengfei    时间: 2014-9-27 00:30
在抓取网页的时候,适当让程序sleep一下,可以减少短时间内的请求,提高请求的成功率。
这句话有用,我说怎么我的程序抓网页的内容有时候会莫名其妙的错误。
作者: 周末晒被子    时间: 2016-1-13 16:37
先生可以简单地演示一下如何给打飞机游戏加上每一秒的帧数吗?
作者: crossin先生    时间: 2016-1-13 17:57
周末晒被子 发表于 2016-1-13 16:37
先生可以简单地演示一下如何给打飞机游戏加上每一秒的帧数吗?

说个大概思路:
每一次while循环里面,获取当前时间(要用能获取到毫秒级别的方法)t_now。
跟上一次的值t_last相减,得到的就是这一帧花掉的时间t_delta。
用1/t_delta就是帧数,输出在屏幕上
然后把t_last更新为t_now

作者: catherinemic    时间: 2016-2-12 15:05
get it~~
作者: xqqxjnt1988    时间: 2016-2-16 16:24
@crossing先生,请帮我看看这个错误啊
def main():
    star_time=time.time
    print 'start:%f' % star_time
    search_in_path("C:\Python27", "xuqq")
    end_time=time.time
    print "end:%f" % end_time
    print "total time:%f" % (end_time-star_time)

cmd上报错:提示typeerror:float argument required,not built in function or method
作者: crossin先生    时间: 2016-2-16 22:29
xqqxjnt1988 发表于 2016-2-16 16:24
@crossing先生,请帮我看看这个错误啊
def main():
    star_time=time.time

time.time()
没有后面的()就没有调用函数,得到的不是结果,而是这个函数本身
你可以看报错在哪一行去分析
作者: kevin    时间: 2018-2-23 22:50
为什么减少短时间内的请求就可以提高请求的成功率?
作者: crossin先生    时间: 2018-2-24 09:46
kevin 发表于 2018-2-23 22:50
为什么减少短时间内的请求就可以提高请求的成功率?

请求太快会被对方服务器封的
作者: cesthomas    时间: 2018-2-25 17:49
顶  
简单易懂
作者: jinbohuan    时间: 2018-4-4 17:11
crossin先生 发表于 2016-1-13 17:57
说个大概思路:
每一次while循环里面,获取当前时间(要用能获取到毫秒级别的方法)t_now。
跟上一次的值 ...

插个眼,回头回来认真复习一下




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5