1998-08-10 16:42:37 -03:00
|
|
|
\section{\module{Queue} ---
|
2000-10-10 14:03:45 -03:00
|
|
|
A synchronized queue class}
|
1998-07-23 14:59:49 -03:00
|
|
|
|
2000-10-10 14:03:45 -03:00
|
|
|
\declaremodule{standard}{Queue}
|
1998-08-10 16:42:37 -03:00
|
|
|
\modulesynopsis{A synchronized queue class.}
|
1998-07-23 14:59:49 -03:00
|
|
|
|
1997-11-20 15:54:16 -04:00
|
|
|
|
1998-03-10 01:32:30 -04:00
|
|
|
The \module{Queue} module implements a multi-producer, multi-consumer
|
1997-11-20 15:54:16 -04:00
|
|
|
FIFO queue. It is especially useful in threads programming when
|
|
|
|
information must be exchanged safely between multiple threads. The
|
1998-03-10 01:32:30 -04:00
|
|
|
\class{Queue} class in this module implements all the required locking
|
1997-11-20 15:54:16 -04:00
|
|
|
semantics. It depends on the availability of thread support in
|
|
|
|
Python.
|
|
|
|
|
1998-03-10 01:32:30 -04:00
|
|
|
The \module{Queue} module defines the following class and exception:
|
1997-11-20 15:54:16 -04:00
|
|
|
|
1998-03-10 01:32:30 -04: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 15:54:16 -04:00
|
|
|
|
|
|
|
\begin{excdesc}{Empty}
|
1999-02-08 14:43:13 -04:00
|
|
|
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
|
2000-04-03 17:13:55 -03:00
|
|
|
\method{put_nowait()}) is called on a \class{Queue} object which is
|
1999-02-08 14:43:13 -04:00
|
|
|
full or locked.
|
1997-11-20 15:54:16 -04:00
|
|
|
\end{excdesc}
|
|
|
|
|
|
|
|
\subsection{Queue Objects}
|
1998-03-10 01:32:30 -04:00
|
|
|
\label{QueueObjects}
|
1997-11-20 15:54:16 -04:00
|
|
|
|
1998-03-10 01:32:30 -04:00
|
|
|
Class \class{Queue} implements queue objects and has the methods
|
1997-11-20 15:54:16 -04: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 01:32:30 -04:00
|
|
|
methods are:
|
1997-11-20 15:54:16 -04:00
|
|
|
|
1998-03-27 01:27:08 -04:00
|
|
|
\begin{methoddesc}{qsize}{}
|
1999-02-08 14:43:13 -04:00
|
|
|
Return the approximate size of the queue. Because of multithreading
|
1997-11-20 15:54:16 -04:00
|
|
|
semantics, this number is not reliable.
|
1998-03-27 01:27:08 -04:00
|
|
|
\end{methoddesc}
|
1997-11-20 15:54:16 -04:00
|
|
|
|
1998-03-27 01:27:08 -04:00
|
|
|
\begin{methoddesc}{empty}{}
|
1999-02-08 14:43:13 -04:00
|
|
|
Return \code{1} if the queue is empty, \code{0} otherwise. Because
|
1998-03-10 01:32:30 -04:00
|
|
|
of multithreading semantics, this is not reliable.
|
1998-03-27 01:27:08 -04:00
|
|
|
\end{methoddesc}
|
1997-11-20 15:54:16 -04:00
|
|
|
|
1998-03-27 01:27:08 -04:00
|
|
|
\begin{methoddesc}{full}{}
|
1999-02-08 14:43:13 -04:00
|
|
|
Return \code{1} if the queue is full, \code{0} otherwise. Because of
|
1997-11-20 15:54:16 -04:00
|
|
|
multithreading semantics, this is not reliable.
|
1998-03-27 01:27:08 -04:00
|
|
|
\end{methoddesc}
|
1997-11-20 15:54:16 -04:00
|
|
|
|
1999-02-08 14:43:13 -04:00
|
|
|
\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)}.
|
1998-03-27 01:27:08 -04:00
|
|
|
\end{methoddesc}
|
1997-11-20 15:54:16 -04:00
|
|
|
|
1999-02-08 14:43:13 -04:00
|
|
|
\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.
|
1998-03-27 01:27:08 -04:00
|
|
|
\end{methoddesc}
|
1997-11-20 15:54:16 -04:00
|
|
|
|
1998-03-27 01:27:08 -04:00
|
|
|
\begin{methoddesc}{get_nowait}{}
|
1999-02-08 14:43:13 -04:00
|
|
|
Equivalent to \code{get(0)}.
|
1998-03-27 01:27:08 -04:00
|
|
|
\end{methoddesc}
|