[Python-Dev] PEP 550 v4: coroutine policy
Antoine Pitrou
antoine at python.org
Tue Aug 29 16:10:01 EDT 2017
Le 29/08/2017 à 21:59, Yury Selivanov a écrit :
>
> This absolutely needs to be fixed, and the only way (that I know) it
> can be fixed is to revert the "every coroutine has its own LC"
> statement (going back to the semantics coroutines had in PEP 550 v2
> and v3).
I completely agree with this. What I don't understand is why example #2
can't work the same.
> "await bar()" and "await wait_for(bar())" are actually quite
> different. Let me illustrate with an example:
>
> b1 = bar()
> # bar() is not running yet
> await b1
>
> b2 = wait_for(bar())
> # bar() was wrapped into a Task and is being running right now
> await b2
>
> Usually this difference is subtle, but in asyncio it's perfectly fine
> to never await on b2, just let it run until it completes. If you
> don't "await b1" -- b1 simply will never run.
Perhaps... But still, why doesn't bar() inherit the LC *at the point
where it was instantiated* (i.e. foo()'s LC in the examples)? The fact
that it's *later* passed to wait_for() shouldn't matter, right? Or
should it?
Regards
Antoine.
More information about the Python-Dev
mailing list