[issue17985] multiprocessing Queue.qsize() and Queue.empty() with different results

Andre Dias report at bugs.python.org
Thu May 16 00:33:12 CEST 2013


Andre Dias added the comment:

RIchard,

But the example program has no races, no threads, nothing.
empty() is returning TRUE even though qsize() is >0 (which actually is)
And it happens almost every time I run that small example.
I had read the module doc, and I know its an unreliable method, but man,
the example program is too simple to fail
Truth is I decided qsize() is more reliable and im using it in my programs,
but man empty() problem is so ridiculous that I decided to submit here

2013/5/15 Richard Oudkerk <report at bugs.python.org>

>
> Richard Oudkerk added the comment:
>
> On 15/05/2013 10:25pm, Andre Dias wrote:
> > But qsize() is working. what is not working is empty()
>
> empty() returns False when there is data in the underlying pipe.  But
> the data does not enter the pipe until a background thread has written
> it to the pipe.  This should not cause any problems.
>
> Using Queue.empty() is always subject to races.  It is just that the
> multiprocessing version has an additional type of race compared to the
> normal one.
>
> ----------
>
> _______________________________________
> Python tracker <report at bugs.python.org>
> <http://bugs.python.org/issue17985>
> _______________________________________
>

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue17985>
_______________________________________


More information about the Python-bugs-list mailing list