[Python-Dev] Minimal 'stackless' PEP using generators? (original) (raw)
Clark C. Evans cce at clarkevans.com
Mon Aug 23 18:34:20 CEST 2004
- Previous message: [Python-Dev] Minimal 'stackless' PEP using generators?
- Next message: [Python-Dev] Minimal 'stackless' PEP using generators?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Aug 23, 2004 at 11:56:04AM -0400, Phillip J. Eby wrote: | >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"?
Yes. The top-most non-generator on the stack.
| 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'.
Could you provide an example? The problem this proposal solves is straight-foward -- it is tedious and slow to have intermediate generators do stuff like:
def middle():
""" intermediate generator _only_ sees one and two """
for x in top():
! if isinstance(x,X): ! yield x print "middle", x yield x
This extra step is tedious and also slow; especially if one has lots of yield statements that cooperate. It could be standardized and made a bit snappier if it was built-in behavior. This is an 80/5 proposal. One gets 80% of the happiness, with 5% of the pain.
| 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. :(
Yes, I know. I'm trying to avoid this much harder problem.
Clark
- Previous message: [Python-Dev] Minimal 'stackless' PEP using generators?
- Next message: [Python-Dev] Minimal 'stackless' PEP using generators?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]