Ben Sizer wrote: ... > But do you have an example of such a use case? That's what I'm missing > here.
I've been looking at this myself, trying to understand the point of coroutines. I believe that they boil down to generators which are able to take in data as well as provide it. A simple way of looking at it seems to be that a coroutine is a generator which can have its state changed whilst it is still active. A silly example to illustrate: # coroutine.py def stateful_generator(people): greeting = "Hello" for person in people: received = (yield greeting + " " + person) if received: greeting = received if __name__ == "__main__": people = ["bob", "henry", "jim-lad", "boney", "greebo", "badger"] gen = stateful_generator(people) print gen.next() # Hello bob print gen.next() # Hello henry print gen.send("Yo! ") # Yo! jim-lad print gen.next() # Yo! boney print gen.send("Meow ") # Meow greebo print gen.next() # Meow badger So you can change the behaviour of the coroutine whilst it is running. That's as far as I have got with them though - there are presumably many other uses of coroutines out there as I guess this use case could be simulated using generators and globals. -- http://mail.python.org/mailman/listinfo/python-list