设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 31835|回复: 13
打印 上一主题 下一主题

【Python 第61课】 计时

[复制链接]

174

主题

45

好友

11万

积分

管理员

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
回复

使用道具 举报

0

主题

1

好友

26

积分

新手上路

Rank: 1

14#
发表于 2018-4-4 17:11:58 |只看该作者
crossin先生 发表于 2016-1-13 17:57
说个大概思路:
每一次while循环里面,获取当前时间(要用能获取到毫秒级别的方法)t_now。
跟上一次的值 ...

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

使用道具 举报

1

主题

0

好友

7

积分

新手上路

Rank: 1

13#
发表于 2018-2-25 17:49:42 |只看该作者
顶  
简单易懂
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

12#
发表于 2018-2-24 09:46:33 |只看该作者
kevin 发表于 2018-2-23 22:50
为什么减少短时间内的请求就可以提高请求的成功率?

请求太快会被对方服务器封的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

16

积分

新手上路

Rank: 1

11#
发表于 2018-2-23 22:50:35 |只看该作者
为什么减少短时间内的请求就可以提高请求的成功率?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

10#
发表于 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
回复

使用道具 举报

0

主题

1

好友

61

积分

注册会员

Rank: 2

9#
发表于 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
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

8#
发表于 2016-2-12 15:05:11 |只看该作者
get it~~
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

7#
发表于 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

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

6#
发表于 2016-1-13 16:37:08 |只看该作者
先生可以简单地演示一下如何给打飞机游戏加上每一秒的帧数吗?
回复

使用道具 举报

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

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

GMT+8, 2024-11-24 08:09 , Processed in 0.018322 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部