1.思路:
首先要在裝飾器中確定訪問的方法名, 第一次可以訪問成功,之后要在規定的時間(變量)之后才可以訪問. 初始應該有一個變量為0;訪問成功之后把當前的時間賦值給這個變零. 這樣再次訪問時把當前的時間與變量比較差值即可.
2.代碼:
import time
def desc_time(s):
def wapper(func):
name = func.__name__ #給變量name賦值 確定訪問的函數
func_identify = {name: 0,'second': s}
def inner(*args,**kwargs):
use_time = func_identify[name]+func_identify['second'] # 需等待這些時間之后才可以再次訪問
now_time = time.time()
re_time =use_time - now_time # 這個結果是一個負數
if now_time > use_time: # 如果當前時間大於等待的時間
res = func(*args,**kwargs)
func_identify[name]= now_time # 給 func_identify[name] 重新賦值
else:
print("請在{}之后訪問".format(re_time))
res = " "
return res
return inner
return wapper
@desc_time(10) #在這兒參數為設置調用間隔時間
def foo1(*args, **kwargs):
print('執行foo1--執行成功!')
return 'result'
#測試代碼
for i in range(50):
time.sleep(1)
print(foo1())
