| \section{Standard module \sectcode{Queue}} | 
 | \stmodindex{Queue} | 
 |  | 
 | \label{module-Queue} | 
 |  | 
 | % ==== 2. ==== | 
 | % Give a short overview of what the module does. | 
 | % If it is platform specific, mention this. | 
 | % Mention other important restrictions or general operating principles. | 
 | % For example: | 
 |  | 
 | The \code{Queue} module implements a multi-producer, multi-consumer | 
 | FIFO queue.  It is especially useful in threads programming when | 
 | information must be exchanged safely between multiple threads.  The | 
 | \code{Queue} class in this module implements all the required locking | 
 | semantics.  It depends on the availability of thread support in | 
 | Python. | 
 |  | 
 | The \code{Queue} module defines the following exception: | 
 |  | 
 | \renewcommand{\indexsubitem}{(in module Queue)} | 
 |  | 
 | \begin{excdesc}{Empty} | 
 | Exception raised when non-blocking get (e.g. \code{get_nowait()}) is | 
 | called on a Queue object which is empty, or for which the emptyiness | 
 | cannot be determined (i.e. because the appropriate locks cannot be | 
 | acquired). | 
 | \end{excdesc} | 
 |  | 
 | \subsection{Queue Objects} | 
 |  | 
 | Class \code{Queue} implements queue objects and has the methods | 
 | described below.  This class can be derived from in order to implement | 
 | other queue organizations (e.g. stack) but the inheritable interface | 
 | is not described here.  See the source code for details.  The public | 
 | interface methods are: | 
 |  | 
 | \renewcommand{\indexsubitem}{(__init__ method)} | 
 |  | 
 | \begin{funcdesc}{__init__}{maxsize} | 
 | Constructor for the class.  \var{maxsize} is an integer that sets the | 
 | upperbound limit on the number of items that can be placed in the | 
 | queue.  Insertion will block once this size has been reached, until | 
 | queue items are consumed.  If \var{maxsize} is less than or equal to | 
 | zero, the queue size is infinite. | 
 | \end{funcdesc} | 
 |  | 
 | \renewcommand{\indexsubitem}{(qsize method)} | 
 |  | 
 | \begin{funcdesc}{qsize}{} | 
 | Returns the approximate size of the queue.  Because of multithreading | 
 | semantics, this number is not reliable. | 
 | \end{funcdesc} | 
 |  | 
 | \renewcommand{\indexsubitem}{(empty method)} | 
 |  | 
 | \begin{funcdesc}{empty}{} | 
 | Returns 1 if the queue is empty, 0 otherwise.  Because of | 
 | multithreading semantics, this is not reliable. | 
 | \end{funcdesc} | 
 |  | 
 | \renewcommand{\indexsubitem}{(full method)} | 
 |  | 
 | \begin{funcdesc}{full}{} | 
 | Returns 1 if the queue is full, 0 otherwise.  Because of | 
 | multithreading semantics, this is not reliable. | 
 | \end{funcdesc} | 
 |  | 
 | \renewcommand{\indexsubitem}{(put method)} | 
 |  | 
 | \begin{funcdesc}{put}{item} | 
 | Puts \var{item} into the queue. | 
 | \end{funcdesc} | 
 |  | 
 | \renewcommand{\indexsubitem}{(get method)} | 
 |  | 
 | \begin{funcdesc}{get}{} | 
 | Gets and returns an item from the queue, blocking if necessary until | 
 | one is available. | 
 | \end{funcdesc} | 
 |  | 
 | \renewcommand{\indexsubitem}{(get_nowait method)} | 
 |  | 
 | \begin{funcdesc}{get_nowait}{} | 
 | Gets and returns an item from the queue if one is immediately | 
 | available.  Raises an \code{Empty} exception if the queue is empty or | 
 | if the queue's emptiness cannot be determined. | 
 | \end{funcdesc} |