1997-12-17 14:08:01 +00:00
|
|
|
\section{Standard Module \sectcode{Queue}}
|
1997-11-20 19:54:16 +00:00
|
|
|
\stmodindex{Queue}
|
|
|
|
\label{module-Queue}
|
|
|
|
|
|
|
|
|
1998-03-10 05:32:30 +00:00
|
|
|
The \module{Queue} module implements a multi-producer, multi-consumer
|
1997-11-20 19:54:16 +00:00
|
|
|
FIFO queue. It is especially useful in threads programming when
|
|
|
|
information must be exchanged safely between multiple threads. The
|
1998-03-10 05:32:30 +00:00
|
|
|
\class{Queue} class in this module implements all the required locking
|
1997-11-20 19:54:16 +00:00
|
|
|
semantics. It depends on the availability of thread support in
|
|
|
|
Python.
|
|
|
|
|
1998-03-10 05:32:30 +00:00
|
|
|
The \module{Queue} module defines the following class and exception:
|
1997-11-20 19:54:16 +00:00
|
|
|
|
1998-03-10 05:32:30 +00:00
|
|
|
|
|
|
|
\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}
|
1997-11-20 19:54:16 +00:00
|
|
|
|
|
|
|
\begin{excdesc}{Empty}
|
1998-03-10 05:32:30 +00:00
|
|
|
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).
|
1997-11-20 19:54:16 +00:00
|
|
|
\end{excdesc}
|
|
|
|
|
|
|
|
\subsection{Queue Objects}
|
1998-03-10 05:32:30 +00:00
|
|
|
\label{QueueObjects}
|
1997-11-20 19:54:16 +00:00
|
|
|
|
1998-03-10 05:32:30 +00:00
|
|
|
Class \class{Queue} implements queue objects and has the methods
|
1997-11-20 19:54:16 +00:00
|
|
|
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
|
1998-03-10 05:32:30 +00:00
|
|
|
methods are:
|
1997-11-20 19:54:16 +00:00
|
|
|
|
1998-03-27 05:27:08 +00:00
|
|
|
\begin{methoddesc}{qsize}{}
|
1997-11-20 19:54:16 +00:00
|
|
|
Returns the approximate size of the queue. Because of multithreading
|
|
|
|
semantics, this number is not reliable.
|
1998-03-27 05:27:08 +00:00
|
|
|
\end{methoddesc}
|
1997-11-20 19:54:16 +00:00
|
|
|
|
1998-03-27 05:27:08 +00:00
|
|
|
\begin{methoddesc}{empty}{}
|
1998-03-10 05:32:30 +00:00
|
|
|
Returns \code{1} if the queue is empty, \code{0} otherwise. Because
|
|
|
|
of multithreading semantics, this is not reliable.
|
1998-03-27 05:27:08 +00:00
|
|
|
\end{methoddesc}
|
1997-11-20 19:54:16 +00:00
|
|
|
|
1998-03-27 05:27:08 +00:00
|
|
|
\begin{methoddesc}{full}{}
|
1998-03-10 05:32:30 +00:00
|
|
|
Returns \code{1} if the queue is full, \code{0} otherwise. Because of
|
1997-11-20 19:54:16 +00:00
|
|
|
multithreading semantics, this is not reliable.
|
1998-03-27 05:27:08 +00:00
|
|
|
\end{methoddesc}
|
1997-11-20 19:54:16 +00:00
|
|
|
|
1998-03-27 05:27:08 +00:00
|
|
|
\begin{methoddesc}{put}{item}
|
1997-11-20 19:54:16 +00:00
|
|
|
Puts \var{item} into the queue.
|
1998-03-27 05:27:08 +00:00
|
|
|
\end{methoddesc}
|
1997-11-20 19:54:16 +00:00
|
|
|
|
1998-03-27 05:27:08 +00:00
|
|
|
\begin{methoddesc}{get}{}
|
1997-11-20 19:54:16 +00:00
|
|
|
Gets and returns an item from the queue, blocking if necessary until
|
|
|
|
one is available.
|
1998-03-27 05:27:08 +00:00
|
|
|
\end{methoddesc}
|
1997-11-20 19:54:16 +00:00
|
|
|
|
1998-03-27 05:27:08 +00:00
|
|
|
\begin{methoddesc}{get_nowait}{}
|
1997-11-20 19:54:16 +00:00
|
|
|
Gets and returns an item from the queue if one is immediately
|
1998-03-10 05:32:30 +00:00
|
|
|
available. Raises an \exception{Empty} exception if the queue is
|
|
|
|
empty or if the queue's emptiness cannot be determined.
|
1998-03-27 05:27:08 +00:00
|
|
|
\end{methoddesc}
|