import requests
import time
url = 'http://www.baidu.com'
# 不含参数的装饰器,两个套
def alltime(func):
def wrapper(*args,**kwargs):
start = time.time()
content = func(*args,**kwargs)
print(time.time() - start)
return content
return wrapper
@alltime
def request():
content = requests.get(url)
return content
# 含参数的装饰器,三个套
def out(canshu):
def cehi(func):
def wrapper(*args,**kwargs):
# 可以理解为闭包中的global,在内部函数中修改外部函数的值
nonlocal canshu
while int(canshu) < 100:
start= time.time()
time.sleep(2)
content = func(*args,**kwargs)
print('本次用时%s' % (time.time()-start))
canshu = int(canshu) + 1
# 被装饰的函数有返回值的情况下需要返回
return content
return wrapper
return cehi
@out(canshu=30)
def xx():
print(123)
xx()
pyspider中every,config装饰器的实现原理
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。