[Python-ideas] The async API of the future: yield-from

Guido van Rossum guido at python.org
Mon Oct 15 01:28:56 CEST 2012

On Sun, Oct 14, 2012 at 3:55 PM, Ben Darnell <ben at bendarnell.com> wrote:
> Ah, OK.  I was mistaken about the "first yield" part, but the rest
> stands.  The problem is that as soon as task1 blocks on IO, the entire
> current task (which includes outer(), par(), and both children) gets
> unscheduled.  no part of task2 gets scheduled until it gets yielded
> from, because the scheduler can't see it until then.

Ah, yes. I had forgotten that the whole stack (at least all frames
currently blocked in yield-from) is suspended.

I really hope that Greg has a working implementation of par().

> The good and bad parts of this proposal both stem from the fact that
> yield from is very similar to just inlining everything together.  This
> gives you the exception handling semantics that you expect from
> synchronous code, but it means that the scheduler can't distinguish
> between subtasks; you have to explicitly schedule them as top-level
> tasks.

I'm beginning to see that. Thanks for helping me form my intuition
about how this stuff works!

--Guido van Rossum (python.org/~guido)

More information about the Python-ideas mailing list