python令牌桶算法
生活随笔
收集整理的這篇文章主要介紹了
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
來源:掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
總結
以上是生活随笔為你收集整理的python令牌桶算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 线程池相关问题
- 下一篇: 使用百度大脑,导入aip以及相应的库文件