From 611eaf0e66bfd00d2ee9e25d4ae9648c9dc2f600 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Fri, 6 Mar 2009 23:55:28 +0000 Subject: [PATCH] Document the suggested alternative to emtpy() and full(). --- Lib/queue.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Lib/queue.py b/Lib/queue.py index 773b680d8c..450f845d44 100644 --- a/Lib/queue.py +++ b/Lib/queue.py @@ -91,14 +91,31 @@ class Queue: return n def empty(self): - """Return True if the queue is empty, False otherwise (not reliable!).""" + """Return True if the queue is empty, False otherwise (not reliable!). + + This method is likely to be removed at some point. Use qsize() == 0 + as a direct substitute, but be aware that either approach risks a race + condition where a queue can grow before the result of empty() or + qsize() can be used. + + To create code that needs to wait for all queued tasks to be + completed, the preferred technique is to use the join() method. + + """ self.mutex.acquire() n = not self._qsize() self.mutex.release() return n def full(self): - """Return True if the queue is full, False otherwise (not reliable!).""" + """Return True if the queue is full, False otherwise (not reliable!). + + This method is likely to be removed at some point. Use qsize() == n + as a direct substitute, but be aware that either approach risks a race + condition where a queue can shrink before the result of full() or + qsize() can be used. + + """ self.mutex.acquire() n = 0 < self.maxsize == self._qsize() self.mutex.release() -- 2.40.0