import time #time模块可以获取当前的时间
思路如下:
#代码运行之前获取一下时间 start = time.time() #time模块里的time方法,可以获取当前时间的时间戳,时间戳是从1970-01-01 00:00:00 UTC 到现在的秒数 print('start=',start) x=0 for i in range(1,10000000) x+=i print(x) end=time.time() print('代码运行耗时时间:',end-start)优化计算时间
import time start = time.time() print('start=',start) x=0 for i in range(1,10000000) x+=i print(x) end=time.time() print('代码运行耗时时间:',end-start) y=1 for j in range(1,1000000) y*=y print(y) print('hello') time.sleep(3) print(' world') def cal_time(fn): start=time.time() fn() end=time.time() print('代码运行耗时时间:',end-start) def dome(): x=0 for i in range(1,10000000) x+=i print(x) cal_time(dome) def foo(): y=1 for j in range(1,1000000) y*=y print(y) cal_time(foo)装饰器的使用
import time def cal_time(fn): def inner(): start =time.time() fn() end=time.time() print('代码运行耗时时间:',end-start) return inner @cal_time def dome(): x=0 for i in range(1,10000000): x+=i print(x) cal_time(dome) @cal_time#第一件事调用cal_time;第二件事把被装饰的函数传递给fn def foo(): y=1 for j in range(1,1000000): y*=y print(y) print('hello') time.sleep(3) print('world') #第三件事:当再次调用demo函数是,此时的demo函数已经不再是上面的demo函数了 print('装饰后的demo={}'.format(demo)) demo() foo()装饰器详解
def cal_time(fn): print('我是外部函数,我被调用了') def inner(): start =time.time() fn() end=time.time() print('代码运行耗时间:',end-start) return inner @cal_time def foo(): y=1 for j in range(1,1000): y*=y print(y) print('hello') time.sleep(3) print('world') return y foo() m=foo() print('m的值是:',m)#结果是None #为什么拿不到y 的值?怎么样才能拿到? #原因是foo函数已经不是foo了,变成了inner函数,仅需在inner函数里修改即可 def inner(): start =time.time() s=fn() end=time.time() print('代码运行耗时间:',end-start) return s return inner 下面我们希望 n=int(input("输入n的值:")) def foo(n):#我们自己为foo函数传参,于是我们需要修改inner(里面的参数,变成inner(x),当然fn()函数也需要修改,因为fn函数现在才是原来的foo函数了,fn(x)这里的x是实参了,不能使用其他变量了 当我们需要取消print('代码运行耗时间:',end-start)这行代码时可以return s,end-start,这时m的值就是一个元组,包含了求和的结果和运行时间 修改 def inner(n,*args,**kwargs),这时候可以修改m=demo(1000000,'good',y='hello')装饰器的使用(2)
def can_play(fn): def inner(x,y,*args,**kwargs): if args[0]<=22: fn(x,y) else: print('太晚了,不行') return inner @can_play def play_game(name,game): print('{}正在玩{}'.format(name,game)) play_game('张三','王者荣耀',18) play_game('李四','绝地求生',22) 如果要使用**kwargs,可以这样修改: play_game('张三','王者荣耀',clock=18) clock=kwargs['clock'] if clock<=22: fn(x,y) 但是修改了会有begud,可以修改为clock = kwargs.get('clock',23 )