Pythonのマルチスレッド(3) - キュー・モジュール
キューモジュールは、主な種類(キュー)と2つの例外クラス(例外クラス)を含む、複数のスレッドへのアクセスをサポートするために、FIFO(FIFO)キューをサポートしています。
PythonはPythonの3のキューに2キューモジュールと改名されます。
キューオブジェクトを作成します。
キューオブジェクトは、キュー・タイプをインスタンス化することによって達成することができます。
1
|
q
=
Queue.Queue(maxsize
=
0
)
|
新しいキューを作成し、意味MAXSIZEパラメータは、次のとおりです。
- MAXSIZE> 0の場合:あなたは挿入するにスレッドがあるまでMAXSIZE中のq要素は、完全な上のキューに達したときにブロックオプションが指定されている場合、それは内部からの要素のうち、スレッドまでブロックされます。
- MAXSIZE <= 0の場合:Pythonは、このキューの容量を制限するものではないと思います。
キューモジュールは、例外クラスを定義します
1
|
Queue.Empty
|
Qキューが空の場合、ターンはq.get(偽)は、それがスローされます呼び出します。
1
|
Queue.Full
|
キューがいっぱいですが、(X、偽)q.putを呼び出すとQは、それがスローされます。
キューオブジェクトメソッド
q.empty()
キューが空であるかどうかを決定します。
q.full()
かどうかキューがいっぱいです。
q.get(ブロック= Trueの場合、タイムアウト=なし) q.get_nowait()
パラメータ ブロック する場合はFalse、パラメータの タイムアウトは 、スレッドがブロックされていないので、意味がありません。
- キューが空ではなく、削除の要素を返す場合は、
- キューが空の場合、スローQueue.Empty
ブロックは タイムアウトと連動して、Trueで タイムアウト プロセスをブロック、またはプロセスがいくつかの時間のためにブロックされていること、キューが空であるときを決定します。
get_nowait()は(偽)を取得、またはかかわらずキュー空いいえすなわち、ブロックされていない待機中の(タイムアウト= 0)を得るに等しいです。
例えば:
1
2
3
4
|
try
:
x
=
q.get_nowait()
except
Queue.Empty:
print
"no more items to process"
|
q.put(アイテム、ブロック= Trueの場合、タイムアウト=なし) q.put_nowait(アイテム)
Queue.Fullかを待ってブロックされたスレッドを投げ、キューがいっぱいの場合は、項目を挿入するキュー。
q.qsize()
キュー内の要素の現在の数を返します。
q.join()
q.task_done()
キューモジュールは、主な種類(キュー)と2つの例外クラス(例外クラス)を含む、複数のスレッドへのアクセスをサポートするために、FIFO(FIFO)キューをサポートしています。
PythonはPythonの3のキューに2キューモジュールと改名されます。
キューオブジェクトを作成します。
キューオブジェクトは、キュー・タイプをインスタンス化することによって達成することができます。
1
|
q
=
Queue.Queue(maxsize
=
0
)
|
新しいキューを作成し、意味MAXSIZEパラメータは、次のとおりです。
- MAXSIZE> 0の場合:あなたは挿入するにスレッドがあるまでMAXSIZE中のq要素は、完全な上のキューに達したときにブロックオプションが指定されている場合、それは内部からの要素のうち、スレッドまでブロックされます。
- MAXSIZE <= 0の場合:Pythonは、このキューの容量を制限するものではないと思います。
キューモジュールは、例外クラスを定義します
1
|
Queue.Empty
|
Qキューが空の場合、ターンはq.get(偽)は、それがスローされます呼び出します。
1
|
Queue.Full
|
キューがいっぱいですが、(X、偽)q.putを呼び出すとQは、それがスローされます。
キューオブジェクトメソッド
q.empty()
キューが空であるかどうかを決定します。
q.full()
かどうかキューがいっぱいです。
q.get(ブロック= Trueの場合、タイムアウト=なし) q.get_nowait()
パラメータ ブロック する場合はFalse、パラメータの タイムアウトは 、スレッドがブロックされていないので、意味がありません。
- キューが空ではなく、削除の要素を返す場合は、
- キューが空の場合、スローQueue.Empty
ブロックは タイムアウトと連動して、Trueで タイムアウト プロセスをブロック、またはプロセスがいくつかの時間のためにブロックされていること、キューが空であるときを決定します。
get_nowait()は(偽)を取得、またはかかわらずキュー空いいえすなわち、ブロックされていない待機中の(タイムアウト= 0)を得るに等しいです。
例えば:
1
2
3
4
|
try
:
x
=
q.get_nowait()
except
Queue.Empty:
print
"no more items to process"
|
q.put(アイテム、ブロック= Trueの場合、タイムアウト=なし) q.put_nowait(アイテム)
Queue.Fullかを待ってブロックされたスレッドを投げ、キューがいっぱいの場合は、項目を挿入するキュー。
q.qsize()
キュー内の要素の現在の数を返します。
q.join()
q.task_done()