Queue qsize = unreliable?
Grant Edwards
grante at visi.com
Fri Aug 6 12:14:38 EDT 2004
On 2004-08-06, Peter Hansen <peter at engcorp.com> wrote:
>> I see per pydoc that Queue.Queue()'s .qsize is allegedly unreliable:
>>
>> | qsize(self)
>> | Return the approximate size of the queue (not reliable!).
>>
>> Any thoughts on why this is unreliable (and more curiously, why it would
>> be put in there as an unreliable function?) Rather than roll my own
>> threaded fifo class, it would seem prudent to use Python's built-in
>> Queue but the warning signs on a rather necessary function seem curious.
>
> (Why do you think this function is necessary? It's probably
> rare to really need it, except perhaps during debugging... )
>
> Anyway, the reason it's called "unreliable", though the term
> "inaccurate" might be more correct, is because while you are
> getting the size of the queue, it might be updated such that
> the new size is one or more fewer or larger than the value
> that is about to be returned to you.
I don't think that's any reason to call the function either
unreliable or inaccurate. If you're operating in a
multi-threaded environment, such a statement is trivially true
about anything that accesses shared data.
For example: time.time() needs a disclaimer that it is
unreliable, since the result it returns is incorrect by the
time you get around to using it...
--
Grant Edwards grante Yow! Spreading peanut
at butter reminds me of
visi.com opera!! I wonder why?
More information about the Python-list
mailing list