PROGRAM PYTHON

Pythonスクリプト【キューを使おう①~FIFO/LIFO】

 

キュー(Queue)を使おう

キュー(Queue)とは、日本語で待ち行列といい、コンピューターで用いられるデータ構造のひとつです。
Pythonのキューには、先入れ先出しキュー(First In First Out/FIFO)、後入れ先出しキュー(Last In First Out/LIFO)、優先順位付けキューがあります。
なお、LIFOはスタックともいいます。
今回は、先入れ先出しキューと後入れ先出しキューのプログラムを作ってみましょう。

 

キューをインポートする

まず、キューライブラリーをインポートします。

import queue

 

キューオブジェクトを作成する

先入れ先出しキューと後入れ先出しキューのオブジェクトの作成は、以下のようになります。

■ 先入れ先出しキュー
オブジェクト名 = queue.Queue(maxsize=0)

■ 後入れ先出しキュー
オブジェクト名 = queue.LifoQueue(maxsize=0)

maxsizeオプションはキューに入れる要素数を表す整数です。
デフォルトは0で、無限に要素を入れることができます。

 

キューに値を入れる

キューに値を入れるには、put()メソッドを使います。

オブジェクト名.put(item, block=True, timeout=None)

内容
item キューに入れる値
block True(デフォルト)/False。ブロックの有無。
timeout 正の整数。タイムアウトする時間。デフォルトはNone

blockオプションとtimeoutオプションは、組み合わせによって意味が変わってきます。

block timeout 内容
True None キューに空きができるまでブロックする(デフォルト)
True 正の整数 キューに空きができるまで最大で指定した秒数ブロックする。タイムアウトしたら例外Fullを送出する
False - 空きがない場合は、直ちに例外Fullを送出する。timeoutオプションは無視される

 

キューから値を取り出す

キューから値を取り出すには、get()メソッドを使います。

オブジェクト名.get(block=True, timeout=None)

内容
block True(デフォルト)/False。ブロックの有無。
timeout 正の整数。タイムアウトする時間。デフォルトはNone

blockオプションとtimeoutオプションは、組み合わせによって意味が変わってきます。

block timeout 内容
True None 値が取り出せるまでブロックする(デフォルト)
True 正の整数 値が取り出せるまで最大で指定した秒数ブロックする。タイムアウトしたら例外Emptyを送出する
False - 値が取り出せない場合は、直ちに例外Emptyを送出する。timeoutオプションは無視される

 

キューを使ったプログラム

キューを使ったプログラムは、以下のようになります。

プログラムを実行すると、左側が先入れ先出しキュー、右側が後入れ先出しキューの値が表示されます。

 

 

-PROGRAM, PYTHON
-,