Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #33863

Re: Why queue.empty() returns False even after put() is called?

References <f5b194cd-cf32-4c3b-a909-8c53a72a4b64@b12g2000vbg.googlegroups.com>
From Ian Kelly <ian.g.kelly@gmail.com>
Date 2012-11-23 11:53 -0700
Subject Re: Why queue.empty() returns False even after put() is called?
Newsgroups comp.lang.python
Message-ID <mailman.240.1353696850.29569.python-list@python.org> (permalink)

Show all headers | View raw


On Fri, Nov 23, 2012 at 9:57 AM, Peng Yu <pengyu.ut@gmail.com> wrote:
> Hi,
>
> The empty() returns True even after put() has been called. Why it is
> empty when there some items in it? Could anybody help me understand
> it? Thanks!
>
> ~/linux/test/python/man/library/multiprocessing/Queue/empty$ cat
> main.py
> #!/usr/bin/env python
>
> import multiprocessing
>
> queue = multiprocessing.Queue()
> print queue.empty()
> queue.put(['a', 'b'])
> queue.put(['c', 'd'])
> print queue.empty()

According to the docs, the Queue uses a background thread to load data into it:

    When a process first puts an item on the queue a feeder thread is
    started which transfers objects from a buffer into the pipe.

Most likely it still appears to be empty because this thread has not
had a chance to run yet.  If you try inserting a time.sleep() call,
you should see the queue become non-empty once the background thread
has run.

Back to comp.lang.python | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

Why queue.empty() returns False even after put() is called? Peng Yu <pengyu.ut@gmail.com> - 2012-11-23 08:57 -0800
  Re: Why queue.empty() returns False even after put() is called? MRAB <python@mrabarnett.plus.com> - 2012-11-23 18:53 +0000
  Re: Why queue.empty() returns False even after put() is called? Ian Kelly <ian.g.kelly@gmail.com> - 2012-11-23 11:53 -0700

csiph-web