
On 2015-06-28 11:52 AM, Paul Sokolovsky wrote:
There is also the problem that one cannot easily feed a queue,
asynchronous generator, or any asynchronous iterator to a simple synchronous consumer like sum() or list() or "".join(). It would be nice if there was a way to wrap them to asynchronous ones when needed – something like (async sum)(asynchronously_produced_numbers()). All that is easily achievable with classical Python coroutines, not with asyncio garden variety of coroutines, which lately were casted into a language level with async/await disablers:
def coro1(): yield 1 yield 2 yield 3
def coro2(): yield from coro1() yield 4 yield 5
print(sum(coro2()))
You have easily achieved combining two generators with 'yield from' and feeding that to 'sum' builtin. There is no way to combine synchronous loops with asynchronous coroutines; by definition, the entire process will block while you are iterating trough them. Yury