python计算时间装饰器_Python 计算Dome运行时间的装饰器

计算Dome运行时间的装饰器

精简版

import time

def GetRunTime(func):

def call_func(*args, **kwargs):

begin_time = time.time()

ret = func(*args, **kwargs)

end_time = time.time()

Run_time = end_time - begin_time

print(str(func.__name__)+"函数运行时间为"+str(Run_time))

return ret

return call_func

啰嗦版

# 导入时间模块

import time

def GetRunTime(func):

def call_func(*args, **kwargs):

# Dome的起始时间

begin_time = time.time()

# 调用Dome

ret = func(*args, **kwargs)

# Dome的结束时间

end_time = time.time()

# Dome的运行时间

Run_time = end_time - begin_time

# 将Dome的名字以及Dome的运行时间,打印在终端

print(str(func.__name__)+"函数运行时间为"+str(Run_time))

# 返回Dome的引用

return ret

# 当函数被装饰的时候, 返回装饰器内闭包函数的引用

return call_func

用两个冒泡排序来演示下此装饰器:

精简版:

import random

import time

def GetRunTime(func):

def call_func(*args, **kwargs):

begin_time = time.time()

ret = func(*args, **kwargs)

end_time = time.time()

Run_time = end_time - begin_time

print(str(func.__name__)+"函数运行时间为"+str(Run_time))

return ret

return call_func

@GetRunTime

def maopao1(data):

for i in range(len(data)-1):

for j in range(len(data)-i-1):

if data[j] > data[j+1]:

data[j], data[j+1] = data[j+1], data[j]

return data

@GetRunTime

def maopao2(data):

for i in range(len(data)-1):

panduan = False

for j in range(len(data)-i-1):

if data[j] > data[j+1]:

data[j], data[j+1] = data[j+1], data[j]

panduan = True

if not panduan:

break

return data

data = list(range(1000))

random.shuffle(data)

print("标准冒泡"+str(maopao1(data)))

print("布尔优化冒泡"+str(maopao2(data)))

运行结果如下:

148b90c43301

装饰器1.png

啰嗦版:

import random

import time

# 先定义一个计算Demo运行时间的装饰器

def GetRunTime(func):

def call_func(*args, **kwargs):

begin_time = time.time()

ret = func(*args, **kwargs)

end_time = time.time()

Run_time = end_time - begin_time

print(str(func.__name__)+"函数运行时间为"+str(Run_time))

return ret

return call_func

# 冒泡标准排序

@GetRunTime

def maopao1(data):

for i in range(len(data)-1):

for j in range(len(data)-i-1):

if data[j] > data[j+1]:

data[j], data[j+1] = data[j+1], data[j]

return data

# 冒泡布尔优化

@GetRunTime

def maopao2(data):

for i in range(len(data)-1):

panduan = False

for j in range(len(data)-i-1):

if data[j] > data[j+1]:

data[j], data[j+1] = data[j+1], data[j]

panduan = True

if not panduan:

break

return data

# 利用range函数来定义一个list[列表]

data = list(range(1000))

print("洗牌之前的列表"str(data))

# 利用random模块的shuffle的函数, 将此列表内元素的顺序打乱,一般都称为洗牌函数

random.shuffle(data)

# 将洗牌后的列表打印在终端

print("洗牌之后的列表:" + str(data))

print("标准冒泡"+str(maopao1(data)))

print("布尔优化冒泡"+str(maopao2(data)))

运行结果如下:

148b90c43301

装饰器2.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值