| \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} |