请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 22633|回复: 13

【Python 第61课】 计时

[复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-10-16 15:34:59 |显示全部楼层
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分钟,轻松学编程




#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

29

积分

新手上路

Rank: 1

发表于 2013-10-20 09:49:06 |显示全部楼层

回帖奖励 +3

顶顶
回复

使用道具 举报

0

主题

0

好友

17

积分

新手上路

Rank: 1

发表于 2013-10-20 18:05:37 |显示全部楼层

回帖奖励 +3

今天来到编程教室,很开心!刚开始接触Python,希望和大家共同学习
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-10-20 21:48:09 |显示全部楼层
建平 发表于 2013-10-20 18:05
今天来到编程教室,很开心!刚开始接触Python,希望和大家共同学习

欢迎
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

558

积分

高级会员

Rank: 4

发表于 2014-9-27 00:30:30 |显示全部楼层

回帖奖励 +3

在抓取网页的时候,适当让程序sleep一下,可以减少短时间内的请求,提高请求的成功率。
这句话有用,我说怎么我的程序抓网页的内容有时候会莫名其妙的错误。
学习,纯粹。
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

发表于 2016-1-13 16:37:08 |显示全部楼层
先生可以简单地演示一下如何给打飞机游戏加上每一秒的帧数吗?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-1-13 17:57:48 |显示全部楼层
周末晒被子 发表于 2016-1-13 16:37
先生可以简单地演示一下如何给打飞机游戏加上每一秒的帧数吗?

说个大概思路:
每一次while循环里面,获取当前时间(要用能获取到毫秒级别的方法)t_now。
跟上一次的值t_last相减,得到的就是这一帧花掉的时间t_delta。
用1/t_delta就是帧数,输出在屏幕上
然后把t_last更新为t_now
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

发表于 2016-2-12 15:05:11 |显示全部楼层
get it~~
回复

使用道具 举报

0

主题

1

好友

61

积分

注册会员

Rank: 2

发表于 2016-2-16 16:24:46 |显示全部楼层
@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
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-2-16 22:29:41 |显示全部楼层
xqqxjnt1988 发表于 2016-2-16 16:24
@crossing先生,请帮我看看这个错误啊
def main():
    star_time=time.time

time.time()
没有后面的()就没有调用函数,得到的不是结果,而是这个函数本身
你可以看报错在哪一行去分析
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-3-29 13:44 , Processed in 0.029789 second(s), 34 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部