[Python-Dev] PEP 492 quibble and request

Ron Adam ron3200 at gmail.com
Thu May 7 15:50:08 CEST 2015

On 05/03/2015 03:03 PM, Arnaud Delobelle wrote:
> On 3 May 2015 at 02:22, Greg Ewing<greg.ewing at canterbury.ac.nz>  wrote:
>> >Guido van Rossum wrote:
>>> >>
>>> >>On Sat, May 2, 2015 at 1:18 PM, Arnaud Delobelle <arnodel at gmail.com
>>> >><mailto:arnodel at gmail.com>> wrote:
>>> >>
>>> >>     Does this mean that
>>> >>     somehow "await x" guarantees that the coroutine will suspend at least
>>> >>     once?
>> >
>> >
>> >No. First, it's possible for x to finish without yielding.
>> >But even if x yields, there is no guarantee that the
>> >scheduler will run something else -- it might just
>> >resume the same task, even if there is another one that
>> >could run. It's up to the scheduler whether it
>> >implements any kind of "fair" scheduling policy.
> That's what I understood but the example ('yielding()') provided by
> Ron Adam seemed to imply otherwise, so I wanted to clarify.

Guido is correct of course.  In examples I've used before with trampolines, 
a co-routine would be yielded back to the event loop, and if there was any 
other co-routines in the event loop they would execute first.  I'm not sure 
if async and await can be used with a trampoline type scheduler.

A scheduler might use a timer or priority based system system to schedule 
events.  So yes, it's up to the scheduler and the pep492 is intended to be 
flexible as to what scheduler is used.


More information about the Python-Dev mailing list