为了账号安全,请及时绑定邮箱和手机立即绑定

Python3.6中打印时间差总是为0,如果分别打印t1,t2,就正常显示(即加上注释的代码就正常)

import time

from functools import reduce

def performance(f):

    def fn(*args, **kw):

        t1 = time.time()

        #print(t1)

        r = f(*args, **kw)

        t2 = time.time()

        #print(t2)

        print ('call %s() in %f s' % (f.__name__, (t2 - t1)))

        return r

    return fn



@performance

def factorial(n):

    return reduce(lambda x,y: x*y, range(1, n+1))


print(factorial(10))


正在回答

5 回答

在3.x中 使用time.perf_counter()

列如

        t1=time.perf_counter()

        s=f(*args,**kw)

        t2=time.perf_counter()

        print('call %s() in %fs' % (f.__name__, (t2 - t1)))


1 回复 有任何疑惑可以回复我~

电脑太快了,所以时间很短;试试factorial(1000)就不是0了;
至于为什么print出来可以看出有一定时间延迟:数据在总线上传输到打印出来所花时间远大于实际用于计算的时间,所以你看到的时间差可以近似认为是数据传输时间

0 回复 有任何疑惑可以回复我~

我用的IDE是PyDev with Eclipse 基于Python2.78,windows 64,两个time.time()相减怎么都是0.000000s,不知道什么原因,但用time.clock()就可以显示出运行时间。

call factorial() in 0.000008s

test time.time: 0.000000s

3628800


0 回复 有任何疑惑可以回复我~

把电脑砸了,重新换一个

2 回复 有任何疑惑可以回复我~

call factorial() in 0.001001 s

3628800

并没有

0 回复 有任何疑惑可以回复我~
#1

qq_永不言弃_48 提问者

Python 3.6我又试了一下,还是0
2018-05-23 回复 有任何疑惑可以回复我~
#2

慕前端3429475 回复 qq_永不言弃_48 提问者

精度问题?
2018-06-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255533    人
  • 解答问题       3038    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

Python3.6中打印时间差总是为0,如果分别打印t1,t2,就正常显示(即加上注释的代码就正常)

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号