[Python-ideas] `__iter__` for queues?
Stefan Behnel
stefan_ml at behnel.de
Wed Jan 20 20:03:58 CET 2010
MRAB, 20.01.2010 00:01:
> Georg Brandl wrote:
>> Your obvious queue iterator would call get(block=False) and stop on
>> Empty. The other obvious meaning is be to call get(block=True) forever.
>> IMO they are both too "obvious" to make a call -- an explicit while loop
>> is better.
I would have expected the behaviour to be infinite/blocking, so I guess I'm
+1 on the "non-obvious" bit.
> To me the 'obvious' meaning is to call get(block=True) and have it raise
> Empty (actually, StopIteration) when the queue is empty and the 'sender'
> has somehow signalled that no more items will be put into the queue
> (q.finished()?). This would also eliminate the need for a sentinel!
You could always use
for item in iter(my_queue, THE_SENTINEL):
...
I think that's simple enough.
Stefan
More information about the Python-ideas
mailing list