Is there any way this queue read can possibly block?

Carl Banks pavlovevidence at gmail.com
Thu Apr 30 18:42:19 EDT 2009


On Apr 30, 11:48 am, John Nagle <na... at animats.com> wrote:
> def draininput(self) :  # consume any queued input
>      try:
>          while True :
>              ch = self.inqueue.get_nowait()     # get input, if any
>      except Queue.Empty:                                # if empty
>          return                                 # done
>
> "self.inqueue" is a Queue object.  The intent here is to drain the
> queue, then return.  Is there any way this can possibly block or hang?

Yes, but it'll be waiting to acquire the semaphore which Queues
normally don't hold onto for long.


Carl Banks

> I wouldn't think so.  Another thread is doing "put" operations,
> but slowly, never more than 5 per second.
>
> (It's working for me, but a user of a program of mine is having a problem.)
>
>                                         John Nagle




More information about the Python-list mailing list