| \section{\module{Queue} --- | 
 |          A synchronized queue class} | 
 |  | 
 | \declaremodule{standard}{Queue} | 
 | \modulesynopsis{A synchronized queue class.} | 
 |  | 
 |  | 
 | 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 \method{get()} (or | 
 | \method{get_nowait()}) is called on a \class{Queue} object which is | 
 | empty or locked. | 
 | \end{excdesc} | 
 |  | 
 | \begin{excdesc}{Full} | 
 | Exception raised when non-blocking \method{put()} (or | 
 | \method{put_nowait()}) is called on a \class{Queue} object which is | 
 | full or locked. | 
 | \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}{} | 
 | Return the approximate size of the queue.  Because of multithreading | 
 | semantics, this number is not reliable. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}{empty}{} | 
 | Return \code{1} if the queue is empty, \code{0} otherwise.  Because | 
 | of multithreading semantics, this is not reliable. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}{full}{} | 
 | Return \code{1} if the queue is full, \code{0} otherwise.  Because of | 
 | multithreading semantics, this is not reliable. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}{put}{item\optional{, block}} | 
 | Put \var{item} into the queue.  If optional argument \var{block} is 1 | 
 | (the default), block if necessary until a free slot is available. | 
 | Otherwise (\var{block} is 0), put \var{item} on the queue if a free | 
 | slot is immediately available, else raise the \exception{Full} | 
 | exception. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}{put_nowait}{item} | 
 | Equivalent to \code{put(\var{item}, 0)}. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}{get}{\optional{block}} | 
 | Remove and return an item from the queue.  If optional argument | 
 | \var{block} is 1 (the default), block if necessary until an item is | 
 | available.  Otherwise (\var{block} is 0), return an item if one is | 
 | immediately available, else raise the | 
 | \exception{Empty} exception. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}{get_nowait}{} | 
 | Equivalent to \code{get(0)}. | 
 | \end{methoddesc} |