Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでのユーザーのレート制限チェックをサポートするデータ構造を定義するプログラム


有効期限で構築でき、ユーザーIDとタイムスタンプを受け取る関数をサポートするデータ構造を開発するとします。これにより、指定されたタイムスタンプで指定されたuser_idを持つユーザーが、要求が失敗するかどうかがチェックされます。ユーザーが指定された有効期限より前にリクエストが成功した場合にのみ失敗します。

したがって、入力がexpire =6のような場合は、オブジェクトobjを作成し、関数obj.limit(0,10)、obj.limit(0,16)、obj.limit(0,17)、およびobj.limit( 1,20)の場合、出力はそれぞれFalse、False、True、Falseになります。これは、ユーザー0の場合、最初はリクエストがなかったためFalseであり、時間16で最後のリクエスト10よりも有効期限6を超えないためです。ただし、17の場合はtrueであり、最後のリクエストの場合はユーザー1の場合であるため、最初のリクエストはfalseです。

これを解決するには、次の手順に従います-

コンストラクターを定義します。これには有効期限がかかります

  • lastCall:=デフォルト値が-1の辞書を作成します
  • 関数limit()を定義します。これにはuid、タイムスタンプが必要です
  • last:=lastCall [uid]
  • lastが-1または(last + Expire)<=タイムスタンプと同じ場合、
    • lastCall [uid]:=タイムスタンプ
    • Falseを返す
  • Trueを返す

理解を深めるために、次の実装を見てみましょう-

from collections import defaultdict
class RateLimit:
   def __init__(self, expire):
      self.expire = expire
      self.lastCall = defaultdict(lambda: -1)
   def limit(self, uid, timestamp):
      last = self.lastCall[uid]
      if last == -1 or last + self.expire <= timestamp:
         self.lastCall[uid] = timestamp
         return False
      return True

expire = 6
obj = RateLimit(expire)
print(obj.limit(0,10))
print(obj.limit(0,16))
print(obj.limit(0,17))
print(obj.limit(1,20))

入力

RateLimit(6)
obj.limit(0,10)
obj.limit(0,16)
obj.limit(0,17)
obj.limit(1,20)

出力

False
False
True
False

  1. 単純な興味のためのPythonプログラム

    この記事では、Python3.xでの単純な利息の計算について学習します。またはそれ以前。 単利は、1日の利率に元本を掛け、支払いの間に経過した日数を掛けて計算されます。 数学的に Simple Interest = (P x T x R)/100 Where, P is the principal amount T is the time and R is the rate たとえば、 If P = 1000,R = 1,T = 2 Then SI=20.0 Now let’s see how we can implement a simple interest calc

  2. 選択ソート用のPythonプログラム

    この記事では、Python3.xでの選択ソートとその実装について学習します。またはそれ以前。 選択ソート アルゴリズムでは、配列は、ソートされていない部分から最小要素を再帰的に見つけて、それを先頭に挿入することによってソートされます。特定の配列での選択ソートの実行中に、2つのサブ配列が形成されます。 すでにソートされているサブアレイ ソートされていないサブアレイ。 選択ソートを繰り返すたびに、ソートされていないサブアレイの最小要素がポップされ、ソートされたサブアレイに挿入されます。 アルゴリズムの視覚的表現を見てみましょう- それでは、アルゴリズムの実装を見てみましょう- 例