【祖传代码】【我的PY工具箱】测量一下程序运行的时间,还有time.sleep是否靠谱

关心代码运行的效率,当然就想测量一下程序的运行时间。如果知道程序开始运行和结束运行的时刻,两者之差就是我们关心的运行时间值。

# 伪代码示意一下:Pseudo code 

startTime = getTime()
myProgram.run()
endTime = getTime()
print(startTime - endTime)

为了有个简单的、可以被测的程序,直接让程序睡一会。搜索关键字:“python”, “sleep”,看了前三篇短小精悍的博客,time模块中的sleep函数应该就能满足这个需求。

import time
def timeIt( second ):
    startTime = time.time()
    time.sleep(second)
    endTime = time.time()
    actualTime = endTime-startTime
    error = (actualTime - second)*100.0/second #相对误差
    print("预期运行时间:{:.6f},实际运行时间:{:.6f}, 误差:{:.3f}%".
    			format(second, actualTime, error))

if __name__=="__main__":
    for i in range(0,5):
        timeIt(1)   # 1秒
        timeIt(0.1) # 100mS,100毫秒    
        timeIt(0.01)  # 10mS    
        timeIt(0.001)  # 1mS
        timeIt(0.0001)  # 100uS,100微秒
        timeIt(0.00001)  # 10uS
        timeIt(0.000001)  # 1uS
        print("")

运行结果大概是这样子的:
在这里插入图片描述
基本上,sleep这个函数在10微秒级(0.01秒)以上是可以比较好的控制休眠时间的,误差可基本上在10%以内。如果给sleep传入更小的时间单位,误差就会比较大。

当然还有一个问题不能确定:
1、在不同机器,不同操作系统上,sleep函数是否有可能由于实现方式不一样,导致可以控制的最小时间单位不一样?

这个问题可能有人在不同机器上试验过,但是貌似没有相关的博客。我的机器是win10,i5-7400 @3.00GHz,python 3.7.1,如果你是不同的系统或者配置,可以尝试看看sleep的效果是否不一样?
在这里插入图片描述

另外注意两个小知识点:
1、格式化字符串输出的时候,可以将 大括号 加冒号({:})认为是代替了原来百分号(%),例如:{:.6f} 等价于原来的 %.6f 格式化字符串。
在这里插入图片描述
2、time.sleep( ) 的参数是秒,但是可以是小数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值