Pythonのqueue
モジュールは、複数のスレッド間で情報を安全に交換するためのマルチスレッドプログラミングに特に有益です。このモジュールのQueue
クラスは、必要なすべてのロックセマンティクスを実装しています。
Queue
クラスは、empty
というメソッドを提供しています。このメソッドは、キューが空の場合にTrue
を返し、そうでなければFalse
を返します。しかし、empty()
がTrue
を返しても、後続のput()
の呼び出しがブロックしないことは保証されません。同様に、empty()
がFalse
を返しても、後続のget()
の呼び出しがブロックしないことは保証されません。
したがって、queue.empty()
の結果に依存するのではなく、以下のようにqueue.qsize()
を使用してキューが空であるかどうかを判断することが推奨されています。
if queue.qsize() == 0:
# キューが空の場合の処理
この方法は、queue.empty()
と理想的には同じ結果を返しますが、実際には様々な問題からそうとは限らないことに注意してください。