@@ -23,8 +23,14 @@ the first retrieved (operating like a stack). With a priority queue,
23
23
the entries are kept sorted (using the :mod: `heapq ` module) and the
24
24
lowest valued entry is retrieved first.
25
25
26
- Internally, the module uses locks to temporarily block competing threads;
27
- however, it is not designed to handle reentrancy within a thread.
26
+ Internally, those three types of queues use locks to temporarily block
27
+ competing threads; however, they are not designed to handle reentrancy
28
+ within a thread.
29
+
30
+ In addition, the module implements a "simple"
31
+ :abbr: `FIFO ( first-in, first-out ) ` queue type where
32
+ specific implementations can provide additional guarantees
33
+ in exchange for the smaller functionality.
28
34
29
35
The :mod: `queue ` module defines the following classes and exceptions:
30
36
@@ -67,6 +73,14 @@ The :mod:`queue` module defines the following classes and exceptions:
67
73
priority: int
68
74
item: Any=field(compare=False)
69
75
76
+ .. class :: SimpleQueue()
77
+
78
+ Constructor for an unbounded :abbr: `FIFO ( first-in, first-out ) ` queue.
79
+ Simple queues lack advanced functionality such as task tracking.
80
+
81
+ .. versionadded :: 3.7
82
+
83
+
70
84
.. exception :: Empty
71
85
72
86
Exception raised when non-blocking :meth: `~Queue.get ` (or
@@ -201,6 +215,60 @@ Example of how to wait for enqueued tasks to be completed::
201
215
t.join()
202
216
203
217
218
+ SimpleQueue Objects
219
+ -------------------
220
+
221
+ :class: `SimpleQueue ` objects provide the public methods described below.
222
+
223
+ .. method :: SimpleQueue.qsize()
224
+
225
+ Return the approximate size of the queue. Note, qsize() > 0 doesn't
226
+ guarantee that a subsequent get() will not block.
227
+
228
+
229
+ .. method :: SimpleQueue.empty()
230
+
231
+ Return ``True `` if the queue is empty, ``False `` otherwise. If empty()
232
+ returns ``False `` it doesn't guarantee that a subsequent call to get()
233
+ will not block.
234
+
235
+
236
+ .. method :: SimpleQueue.put(item, block=True, timeout=None)
237
+
238
+ Put *item * into the queue. The method never blocks and always succeeds
239
+ (except for potential low-level errors such as failure to allocate memory).
240
+ The optional args *block * and *timeout * are ignored and only provided
241
+ for compatibility with :meth: `Queue.put `.
242
+
243
+ .. impl-detail ::
244
+ This method has a C implementation which is reentrant. That is, a
245
+ ``put() `` or ``get() `` call can be interrupted by another ``put() ``
246
+ call in the same thread without deadlocking or corrupting internal
247
+ state inside the queue. This makes it appropriate for use in
248
+ destructors such as ``__del__ `` methods or :mod: `weakref ` callbacks.
249
+
250
+
251
+ .. method :: SimpleQueue.put_nowait(item)
252
+
253
+ Equivalent to ``put(item) ``, provided for compatibility with
254
+ :meth: `Queue.put_nowait `.
255
+
256
+
257
+ .. method :: SimpleQueue.get(block=True, timeout=None)
258
+
259
+ Remove and return an item from the queue. If optional args *block * is true and
260
+ *timeout * is ``None `` (the default), block if necessary until an item is available.
261
+ If *timeout * is a positive number, it blocks at most *timeout * seconds and
262
+ raises the :exc: `Empty ` exception if no item was available within that time.
263
+ Otherwise (*block * is false), return an item if one is immediately available,
264
+ else raise the :exc: `Empty ` exception (*timeout * is ignored in that case).
265
+
266
+
267
+ .. method :: SimpleQueue.get_nowait()
268
+
269
+ Equivalent to ``get(False) ``.
270
+
271
+
204
272
.. seealso ::
205
273
206
274
Class :class: `multiprocessing.Queue `
@@ -210,4 +278,3 @@ Example of how to wait for enqueued tasks to be completed::
210
278
:class: `collections.deque ` is an alternative implementation of unbounded
211
279
queues with fast atomic :meth: `~collections.deque.append ` and
212
280
:meth: `~collections.deque.popleft ` operations that do not require locking.
213
-
0 commit comments