[Python-Dev] Minimal 'stackless' PEP using generators?

Phillip J. Eby pje at telecommunity.com
Mon Aug 23 17:56:04 CEST 2004


At 11:39 AM 8/23/04 -0400, Clark C. Evans wrote:
>I just read the thread 'Stackless Python' in June 2004 on python-dev and
>was wondering if you'd comment on a simpler cooperative mechanism, via a
>small hack to generators:
>
>1.  The PEP would introduce a new 'builtin' class called 'Cooperate'
>
>2.  Generator semantics would be altered so that 'yield X', where X
>     is an instance of Cooperate, would automagically propigate to
>     the outer-most non-generator.

Perhaps you mean "inner-most"?

>With these two changes, the "lower" function could be an async reactor
>like those found in Twisted, or async core.  While the result isn't true
>coutines, it would be a huge improvement for those who would like to do
>async coding.   I've done something similar with Twisted called Flow [1]
>and it works well, with the exception of being a painful syntax hack and
>being quite slow.   If this was moved into Python's core, we'd get most
>of the advantages of coroutines without the full cost.
>
>Thoughts?

It doesn't seem to me to actually help anything.  You can already do this 
using a simple wrapper object that maintains a stack of active generators, 
as I do in 'peak.events'.

I was hoping that you had actually come up with a solution for the more 
complex problem of suspending *non* generator functions, in a way that 
would work with CPython.  :(



More information about the Python-Dev mailing list