zoukankan      html  css  js  c++  java
  • python令牌桶算法

    import time
    
    
    class TokenBucket(object):
    
        # rate是令牌发放速度,capacity是桶的大小
        def __init__(self, rate, capacity):
            self._rate = rate
            self._capacity = capacity
            self._current_amount = 0
            self._last_consume_time = int(time.time())
    
        # token_amount是发送数据需要的令牌数
        def consume(self, token_amount):
            increment = (int(time.time()) - self._last_consume_time) * self._rate  # 计算从上次发送到这次发送,新发放的令牌数量
            self._current_amount = min(
                increment + self._current_amount, self._capacity)  # 令牌数量不能超过桶的容量
            if token_amount > self._current_amount:  # 如果没有足够的令牌,则不能发送数据
                return False
            self._last_consume_time = int(time.time())
            self._current_amount -= token_amount
            return True
    
    作者:simpleapples
    链接:https://juejin.im/post/5ab10045518825557005db65
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

      

  • 相关阅读:
    12_常用类
    MyBatis_02 框架
    MyBatis_01 框架
    正则表达式
    11_异常处理
    产品经理成长之路(非原创)
    【Java每日一题】20161115
    【Java每日一题】20161114
    【Java每日一题】20161111
    【Java每日一题】20161110
  • 原文地址:https://www.cnblogs.com/c-x-a/p/9932573.html
Copyright © 2011-2022 走看看