Generators versus Coroutines
bryanjugglercryptographer at yahoo.com
Thu Aug 19 01:17:04 CEST 2004
[Bryan had written:]
> > I've seen servers that rock written with explicit event handling,
> > threads, processes, and occasionally co-routines. Where are the
> > great generator-based servers?
> Well, the Erlang (language + telecom platform) uses light-weight
> threads which could e.g. be implemented with coroutines in Python.
Well, the issue here is whether they could be implemented
reasonably in Python as it currently is, with generators
but not co-routines.
> Event handling is fine but you could also explicitly code
> your behaviour as state machines ;-)
Hmm, I wasn't distinguishing the two.
> The drawback of event
> handling is that you have to separate state and control flow
> and resuming is error prone whereas generators and coroutines
> are easier and feel more natural.
Right. Every time you do anything that might block, you have to
save your state and return all the way out to the event handler.
I think Python generators are about as awkward; you have to
explicitly yield through every stacked call. Preserving the
local variables seems to be the only advantage.
More information about the Python-list