zoukankan      html  css  js  c++  java
  • Python 中写一个装饰器实现限制频率访问

    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())
    

      

      

  • 相关阅读:
    《精通情绪》读书笔记
    绩效评估与绩效反馈
    数据分析报告格式zz
    学会谈判zz
    javascript中的双向绑定
    理解 DocumentFragment
    理解Object.defineProperty()
    Vue 改变数组中对象的属性不重新渲染View的解决方案
    ES6中Object.assign() 方法
    控制input输入框光标的位置
  • 原文地址:https://www.cnblogs.com/changtao/p/10732206.html
Copyright © 2011-2022 走看看