\section{Standard Module \module{Queue}}
\stmodindex{Queue}
\label{module-Queue}


The \module{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
\class{Queue} class in this module implements all the required locking
semantics.  It depends on the availability of thread support in
Python.

The \module{Queue} module defines the following class and exception:


\begin{classdesc}{Queue}{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{classdesc}

\begin{excdesc}{Empty}
Exception raised when non-blocking get (e.g. \method{get_nowait()}) is
called on a \class{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}
\label{QueueObjects}

Class \class{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
methods are:

\begin{methoddesc}{qsize}{}
Returns the approximate size of the queue.  Because of multithreading
semantics, this number is not reliable.
\end{methoddesc}

\begin{methoddesc}{empty}{}
Returns \code{1} if the queue is empty, \code{0} otherwise.  Because
of multithreading semantics, this is not reliable.
\end{methoddesc}

\begin{methoddesc}{full}{}
Returns \code{1} if the queue is full, \code{0} otherwise.  Because of
multithreading semantics, this is not reliable.
\end{methoddesc}

\begin{methoddesc}{put}{item}
Puts \var{item} into the queue.
\end{methoddesc}

\begin{methoddesc}{get}{}
Gets and returns an item from the queue, blocking if necessary until
one is available.
\end{methoddesc}

\begin{methoddesc}{get_nowait}{}
Gets and returns an item from the queue if one is immediately
available.  Raises an \exception{Empty} exception if the queue is
empty or if the queue's emptiness cannot be determined.
\end{methoddesc}
