""" On the Farm: (Python 3 -- 3to2 easy) for David Beazley, the gratitude, who wanted something more useful than Fibonacci numbers
See: http://oubiwann.blogspot.com/2009/04/generators-and-coroutines.html (my comments appended) """ def coroutine(target): """ used to decorate generators we plan to use as coroutines """ def initialize(*args, **kwargs): thegen = target(*args, **kwargs) next(thegen) return thegen return initialize @coroutine def screening(target, farmanimals): var = "" while True: var = (yield) print("I am a %s" % var) if var in farmanimals: target.send(var) @coroutine def process(): while True: var = (yield) print("Farm animal %s is being processed." % var) def test(): """ >>> I am a cow Farm animal cow is being processed. I am a jackalope I am a pig Farm animal pig is being processed. I am a monkey """ onthefarm = ["cow","pig","chicken"] p2 = process() p1 = screening(p2, onthefarm) p1.send("cow") p1.send("jackalope") p1.send("pig") p1.send("monkey") if __name__ == "__main__": test() _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig