Commit Graph

16 Commits

Author SHA1 Message Date
Raymond Hettinger fd3fcf0b35 SF Patch #1455676: Simplify using Queues with daemon consumer threads
Adds join() and task_done() methods to track when all enqueued tasks have
been gotten and fully processed by daemon consumer threads.
2006-03-24 20:43:29 +00:00
Tim Peters 5af0e41482 Bug #788520: Queue class has logic error when non-blocking
I don't agree it had a bug (see the report), so this is *not* a candidate
for backporting, but the docs were confusing and the Queue implementation
was old enough to vote.

Rewrote put/put_nowait/get/get_nowait from scratch, to use a pair of
Conditions (not_full and not_empty), sharing a common mutex.  The code
is 1/4 the size now, and 6.25x easier to understand.  For blocking
with timeout, we also get to reuse (indirectly) the tedious timeout
code from threading.Condition.  The Full and Empty exceptions raised
by non-blocking calls are now easy (instead of nearly impossible) to
explain truthfully:  Full is raised if and only if the Queue truly
is full when the non-blocking put call checks the queue size, and
similarly for Empty versus non-blocking get.

What I don't know is whether the new implementation is slower (or
faster) than the old one.  I don't really care.  Anyone who cares
a lot is encouraged to check that.
2004-07-12 00:45:14 +00:00
Raymond Hettinger 756b3f3c15 * Move collections.deque() in from the sandbox
* Add unittests, newsitem, and whatsnew
* Apply to Queue.py mutex.py threading.py pydoc.py and shlex.py
* Docs are forthcoming
2004-01-29 06:37:52 +00:00
Martin v. Löwis 77ac429eff Patch #572628: Optional timeouts for put and get. 2002-10-15 15:11:13 +00:00
Skip Montanaro 763805dab2 add seealso link to the bisect module 2002-06-26 05:22:08 +00:00
Fred Drake f8ca7d88c6 Fixed lots of small nits caught by Ka-Ping Yee <ping@lfw.org>. 2000-10-10 17:03:45 +00:00
Fred Drake 38e5d27cae Merged changes from the 1.5.2p2 release.
(Very rough.)
2000-04-03 20:13:55 +00:00
Guido van Rossum ce67f06491 Update documentation to reflect changes to Queue.py by Tim Peters. 1999-02-08 18:43:13 +00:00
Fred Drake 295da24eaf New section header style.
Fix up a few synopses.
1998-08-10 19:42:37 +00:00
Fred Drake b91e934cf1 Adjusted to use the new module synopsis support macros. 1998-07-23 17:59:49 +00:00
Fred Drake 3a0351cf85 Remove all uses of \sectcode; we can now use logical markup everywhere. 1998-04-04 07:23:21 +00:00
Fred Drake 8fe533e6a0 Use the new {methoddesc} and {memberdesc} environments as appropriate. 1998-03-27 05:27:08 +00:00
Fred Drake 4ef3329259 Logical markup.
Correct misuse of indexsubutem.

Describe the Queue class using {classdesc}{Queue}, not {funcdesc}{__init__}.
1998-03-10 05:32:30 +00:00
Fred Drake 1947991c2f Remove all \bcode / \ecode cruft; this is no longer needed. See previous
checkin of myformat.sty.

Change "\renewcommand{\indexsubitem}{(...)}" to "\setindexsubitem{(...)}"
everywhere.

Some other minor nits that I happened to come across.
1998-02-13 06:58:54 +00:00
Fred Drake 9c483191d6 Make the word "Module" in the section header start with an upper-case "M". 1997-12-17 14:08:01 +00:00
Barry Warsaw 17c8e781c0 libqueue.tex: Documentation for the Queue.py module.
Makefile: Add dependency on libqueue.tex

lib.tex: Place the libqueue.tex documentation just after libthread.tex
since Queue depends on thread support in Python.
1997-11-20 19:54:16 +00:00