A Study on Solving Callbacks with JavaScript Generators
jlongster.com
jlongster.com
Since it's a tentative distillation of existing systems and has an extensive design document, it might be simpler than diving into Twisted.
[0] http://www.python.org/dev/peps/pep-3156/
[1] http://www.python.org/dev/peps/pep-3156/#coroutines-and-the-...
If you were worrying about the JIT not supporting them, it appears to just fine:
gentest.py:
def gen():
for i in xrange(10**9):
yield i
for i in gen():
pass
$ time python gentest.py # python 2.7
real 1m12.956s
user 1m12.736s
sys 0m0.000s
$ time pypy gentest.py # pypy 2.0.2
real 0m5.728s
user 0m5.708s
sys 0m0.000s