Day 160スロットリング付き実行キューを作る
Pythonコード
1import time2class 実行キュー:3 def __init__(self):4 self.キュー = []5 self.スロットリング = 06 7 def 追加(self, 関数):8 self.キュー.append(関数)9 10 def 実行(self):11 if self.スロットリング > 0:12 print("スロットリング中...")13 return14 if len(self.キュー) == 0:15 print("キューは空です")16 return17 関数 = self.キュー.pop(0)18 self.スロットリング = 2 # 2秒のスロットリング19 関数()20 time.sleep(self.スロットリング)21 self.スロットリング = 022 23def 関数1():24 print("関数1が実行されました")25 26def 関数2():27 print("関数2が実行されました")28 29キュー = 実行キュー()30キュー.追加(関数1)31キュー.追加(関数2)32キュー.実行()33キュー.実行()
解説
- 行1〜3: 実行キュークラスを定義します。__init__メソッドでキューとスロットリングの初期化を行います。
- 行5〜6: 追加メソッドで関数をキューに追加します。
- 行8〜17: 実行メソッドでキューから関数を取り出し、実行します。スロットリング中の場合は実行しません。
- 行19〜22: サンプルの関数1と関数2を定義します。
- 行24〜27: 実行キューのインスタンスを作成し、関数を追加して実行します。
- 行11: len() は要素数(長さ)を返す関数です。
- 行13: print() は画面に文字や値を表示する関数です。
- 行18: time.sleep() は指定した時間だけ処理を停止する関数です。
次に試してみよう
- 実行キューに複数の関数を追加してみましょう
- スロットリングの時間を変更してみましょう
- 実行キューに優先度をつけてみましょう