[Python-Dev] PEP 492 quibble and request
Guido van Rossum
guido at python.org
Sat May 2 23:09:51 CEST 2015
On Sat, May 2, 2015 at 1:18 PM, Arnaud Delobelle <arnodel at gmail.com> wrote:
> On 1 May 2015 at 20:59, Guido van Rossum <guido at python.org> wrote:
> > On Fri, May 1, 2015 at 12:49 PM, Ron Adam <ron3200 at gmail.com> wrote:
> >> Another useful async function might be...
> >> async def yielding():
> >> pass
> >> In a routine is taking very long time, just inserting "await yielding()"
> >> in the long calculation would let other awaitables run.
> > That's really up to the scheduler, and a function like this should be
> > provided by the event loop or scheduler framework you're using.
> Really? I was under the impression that 'await yielding()' as defined
> above would actually not suspend the coroutine at all, therefore not
> giving any opportunity for the scheduler to resume another coroutine,
> and I thought I understood the PEP well enough. Does this mean that
> somehow "await x" guarantees that the coroutine will suspend at least
You're correct. That's why I said it should be left up to the framework --
ultimately what you *do* have to put in such a function has to be
understood by the framenwork. And that's why in other messages I've used
await asyncio.sleep(0) as an example. Look up its definition.
> To me the async def above was the equivalent of the following in the
> 'yield from' world:
> def yielding():
> yield # Just to make it a generator
> Then "yield from yielding()" will not yield at all - which makes its
> name rather misleading!
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-Dev