Python Queueモジュールをやってみる

Queue モジュールの使い方を勉強したのでメモしておく。

Queue モジュールには、3種類のキューが実装されていている

  1. FIFOキュー
  2. LIFOキュー
  3. 優先順位付きキュー(priority queue)

FIFOキュー

FIFOとはFirst In First Outのこと。最初に追加されたエントリが最初に取り出される。

from Queue import Queue
q = Queue()
for i in range(5):
q.put(i)
print "put: %d" % i
print
while True:
if q.empty():
break
else:
i = q.get(timeout=1)
print "get: %d" % i

結果

put: 0
put: 1
put: 2
put: 3
put: 4
get: 0
get: 1
get: 2
get: 3
get: 4

LIFOキュー

LIFO とは Last In First Out のこと。最後に追加されたエントリが最初に取り出される。(スタックのように振る舞う)

from Queue import LifoQueue
q = LifoQueue()
for i in range(5):
q.put(i)
print "put: %d" % i
print
while True:
if q.empty():
break
else:
i = q.get(timeout=1)
print "get: %d" % i

結果

put: 0
put: 1
put: 2
put: 3
put: 4
get: 4
get: 3
get: 2
get: 1
get: 0

優先順位付きキュー(priority queue)

エントリは(heapq モジュールを利用して)ソートされ、最も低い値のエントリが最初に取り出される。

勉強中

Python

Posted by skw