On Sun, May 15, 2011 at 11:05 AM, Ian Kelly <ian.g.ke...@gmail.com> wrote: > Actually, this won't work, because the value of the "yield None" gets > ignored. Thus if you try to call send() twice in a row, the generator > the treats second send() as if it were a next(), and it is not > possible to have more than one item in the queue.
You're right. It needs a while loop instead of the if (and some slight reordering): def ints(): i=0 queue=[] while True: if queue: # see other thread, this IS legal and pythonic and quite sensible sent=(yield queue.pop(0)) else: sent=(yield i) i+=1 while sent is not None: queue.append(sent) sent=(yield None) # This is the return value from gen.send() That should work. Chris Angelico -- http://mail.python.org/mailman/listinfo/python-list