18.5.8. キュー—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.6/library/asyncio-queue
移動先:案内検索

18.5.8。 キュー

ソースコード: :source: `Lib / asyncio / queues.py`

キュー:

asyncioキューAPIは、キューモジュール(キュー優先度キューLifoQueue )のクラスに近いように設計されていますが、 timeout パラメーター。 asyncio.wait_for()関数を使用して、タイムアウト後にタスクをキャンセルできます。

18.5.8.1。 列

class asyncio.Queue(maxsize=0, \*, loop=None)

生産者と消費者のコルーチンを調整するのに役立つキュー。

maxsize がゼロ以下の場合、キューサイズは無限大です。 0より大きい整数の場合、キューが maxsize に達すると、get()によってアイテムが削除されるまで、yield from put()はブロックされます。

標準ライブラリ queue とは異なり、 qsize()を使用すると、このキューのサイズを確実に知ることができます。これは、シングルスレッドの非同期アプリケーションが qsize()の呼び出し中に中断されないためです。 そしてキューで操作を実行します。

このクラスはスレッドセーフではありません

バージョン3.4.4で変更:新しいjoin()および task_done()メソッド。

empty()

キューが空の場合はTrueを返し、それ以外の場合はFalseを返します。

full()

キューに maxsize アイテムがある場合は、Trueを返します。

ノート

キューがmaxsize=0(デフォルト)で初期化された場合、 full()Trueになることはありません。

get_nowait()

キューからアイテムを削除して返します。

アイテムがすぐに利用できる場合はアイテムを返します。それ以外の場合は、 QueueEmpty を上げます。

put_nowait(item)

ブロックせずにアイテムをキューに入れます。

すぐに利用できる空きスロットがない場合は、 QueueFull を上げます。

qsize()

キュー内のアイテムの数。

task_done()

以前にキューに入れられたタスクが完了したことを示します。

キューコンシューマーによって使用されます。 タスクのフェッチに使用されるget()ごとに、 task_done()への後続の呼び出しは、タスクの処理が完了したことをキューに通知します。

join()が現在ブロックしている場合、すべてのアイテムが処理されると再開されます(つまり、put()待ち行列)。

キューに配置されたアイテムよりも多く呼び出された場合、 ValueError を発生させます。

バージョン3.4.4の新機能。

maxsize

キューで許可されているアイテムの数。


18.5.8.2。 PriorityQueue

class asyncio.PriorityQueue

キューのサブクラス。 優先順位の高い順にエントリを取得します(最初に低いものから)。

エントリは通常、次の形式のタプルです:(優先順位番号、データ)。


18.5.8.3。 LifoQueue

class asyncio.LifoQueue
Queue のサブクラスで、最後に追加されたエントリを最初に取得します。

18.5.8.3.1。 例外

exception asyncio.QueueEmpty
空の Queue オブジェクトで get_nowait()メソッドが呼び出されたときに例外が発生しました。
exception asyncio.QueueFull
put_nowait()メソッドがいっぱいの Queue オブジェクトで呼び出されたときに例外が発生しました。