> I'm writing this as a complete newbie (on the issue), so don't be > surprised if it's the stupidest idea ever. > > I was wondering if there was ever a discusision in the python > community on a 'raise-yield' kind-of combined expression. I'd like to > know if it was proposed/rejected/discussed/not-decided yet??
Recently (ok, several hours ago) I've come up to Greenlets [1] and it seems they implement exactly what I was asking for, in a C extension!! It's too bad that Python doesn't support this by default and many libraries won't make use of it by default. Gevent [2] for example, has to monkey-patch Python's socket, time.sleep and other modules so that things like urllib work with it. I'll continue to read now. [1] http://codespeak.net/py/0.9.2/greenlet.html [2] http://www.gevent.org/ > A 'raise-yield' expression would break the flow of a program just like > an exception, going up the call stack until it would be handled, but > also like yield it would be possible to continue the flow of the > program from where it was raise-yield-ed. > > This would be usefull for example in event based frameworks, they > could just replace socket.* and similar, normally blocking, > modules/functions with it's own 'raise-yield' enabled ones. > > Then you could just take any normal imperative code that calls normal > library networking code (say smtplib, poplib or httplib) nad run it in > a event framework. > The normal xxxlib calls at some point would get to the now > non-blocking, event based socket write/read, break the flow back to > the event framework, and when it finishes the event framework would > continue the normal flow of the program past the raise-yield. -- дамјан ((( http://damjan.softver.org.mk/ ))) Please remember 43% of statistics are made on the spot. -- http://mail.python.org/mailman/listinfo/python-list