Stackless & String-processing
Tim Peters
tim_one at email.msn.com
Thu Jul 15 22:15:20 EDT 1999
More information about the Python-list mailing list
Thu Jul 15 22:15:20 EDT 1999
- Previous message (by thread): Stackless & String-processing
- Next message (by thread): Stackless & String-processing
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Tim] > BTW, generators are much easier to implement than coroutines -- ... [Neel] > What's the difference, exactly? AFAICT you need to save the execution > state when suspending both coroutines and generators, but I might be > missing something obvious.... Just that a generator (in the Icon sense) is a semi-coroutine: it always suspends directly to its caller, at the point it was called. A world of difference follows from that: 1) From the caller's point of view, it's an ordinary call. So on *that* end of it, generators are no harder than vanilla procedure calls. 2) From the generator's point of view, "the execution state" is a single frame (its own). A coroutine can transfer to any other at any time, with intervening calls piling up an arbitrary number of frames in the state. 3) From a recursive interpreter's point of view, the implementation language (C, in Python's case) can't get any of its own frames stuck between caller and callee during suspension of a generator (the generator *returns* to its caller; it doesn't *resume* it; this asymmetry is the heart of it). It's #3 (dealing with an intertwined C stack) that requires platform-specific hackery to make coexps work in Icon, while the lack of C stack pollution is why generators can work without platform-specific cruft. Continuations and threads are harder still to implement (efficiently) -- the less restrictive the rules, the less the implementation can exploit to make its life easier. a-phenomenon-you-may-observe-again-some-day<wink>-ly y'rs - tim
- Previous message (by thread): Stackless & String-processing
- Next message (by thread): Stackless & String-processing
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list