python令牌桶演算法

2022-02-21 20:30:14 字數 765 閱讀 5159

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

令牌桶演算法

令牌桶演算法是網路流量整形和速率限制中最常用的一種演算法。用來控制傳送到網路上的資料的數目,並允許突發資料的傳送。大小固定的令牌桶可自行以恆定的速率源源不斷地產生令牌。如果令牌不被消耗,或者被消耗的速度小於產生的速度,令牌就會不斷地增多,直到把桶填滿。後面再產生的令牌就會從桶中溢位。最後桶中可以儲存...

qos 令牌桶演算法

令牌桶演算法一般指的是單 雙速三色標記法。該演算法要預先在系統中設定三個引數,三個引數如下 cir用於表示每秒ip包的位元組數。cbs和ebs以位元組為單位。必須被設定。推薦值 它們之一必須大於0,且若大於0的cbs和ebs,值要大於mtu。顏色有三種 綠 黃 紅。簡單來說,顏色與引數的對應關係是這...

漏桶演算法與令牌桶演算法

漏桶演算法 leaky bucket 是網路世界中流量整形 traffic shaping 或速率限制 rate limiting 時經常使用的一種演算法,它的主要目的是控制資料注入到網路的速率,平滑網路上的突發流量。漏桶演算法提供了一種機制,通過它,突發流量可以被整形以便為網路提供乙個穩定的流量。...