**• Similar to Generator, but Generator pulls data through the pipe with iteration, while Coroutine pushes data into the pipeline with send().**
**• Coroutines provide more powerful data routing possibilities than iterators.
**• If you built a collection of simple data processing components, you can glue them together into complex arrangements of pipes, branches, merging, etc.**
**• Similar to Generator, but Generator pulls data through the pipe with iteration, while Coroutine pushes data into the pipeline with send().**
**• Coroutines provide more powerful data routing possibilities than iterators.**
**• If you built a collection of simple data processing components, you can glue them together into complex arrangements of pipes, branches, merging, etc.**
### Helper Decorator
**• All coroutines must be "primed" by first calling .next()**
**• Remembering to call .next() is easy to forget.**
**• Solved by wrapping coroutines with a decorator:**
**• All coroutines must be "primed" by first calling .next()**
**• Remembering to call .next() is easy to forget.**
**• Solved by wrapping coroutines with a decorator:**