[Python-Dev] Coroutines and PEP 380

Glyph glyph at twistedmatrix.com
Fri Jan 20 07:28:22 CET 2012


On Jan 19, 2012, at 4:41 PM, Greg wrote:

> Glyph wrote:
>> [Guido] mentions the point that coroutines that can implicitly switch out from under you have the same non-deterministic property as threads: you don't know where you're going to need a lock or lock-like construct to update any variables, so you need to think about concurrency more deeply than if you could explicitly always see a 'yield'.
> 
> I'm not convinced that being able to see 'yield's will help
> all that much.

Well, apparently we disagree, and I work on such a system all day, every day :-).  It was nice to see that Matt Joiner also agreed for very similar reasons, and at least I know I'm not crazy.

> In any system that makes substantial use of
> generator-based coroutines, you're going to see 'yield from's
> all over the place, from the lowest to the highest levels.
> But that doesn't mean you need a correspondingly large
> number of locks. You can't look at a 'yield' and conclude
> that you need a lock there or tell what needs to be locked.

Yes, but you can look at a 'yield' and conclude that you might need a lock, and that you have to think about it.

Further exploration of my own feelings on the subject grew a bit beyond a good length for a reply here, so if you're interested in my thoughts you can have a look at my blog: <http://glyph.twistedmatrix.com/2012/01/concurrency-spectrum-from-callbacks-to.html>.

> There's no substitute for deep thought where any kind of theading is involved, IMO.

Sometimes there's no alternative, but wherever I can, I avoid thinking, especially hard thinking.  This maxim has served me very well throughout my programming career ;-).

-glyph

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20120120/c1b8a931/attachment-0001.html>


More information about the Python-Dev mailing list