On Tue, May 5, 2015 at 3:36 PM, Rajiv Kumar <rajiv.ku...@gmail.com> wrote:
> I wrote a little example[1] that has a bare-bones implementation of Go > style channels via a custom event loop. I used it to translate the prime > sieve example from Go[2] almost directly to Python. The code uses "message > = await channel.receive()" to mimic Go's "message <- channel". Instead of > using "go func()" to fire off a goroutine, I add the PEP492 coroutine to my > simple event loop. > Cool example! It's not an efficient implementation - really just a proof of concept that > you can use async/await in your own code without any reference to asyncio. > I ended up writing it as I was thinking about how PEP 342 style coroutines > might look like in an async/await world. > > In the course of writing this, I did find that it would be useful to have > the PEP document how event loops should advance the coroutines (via > .send(None) for example). It would also be helpful to have the semantics of > how await interacts with different kinds of awaitables documented. I had to > play with Yury's implementation to see what it does if the __await__ just > returns iter([1,2,3]) for example. > I've found this too. :-) Yury, perhaps you could show a brief example in the PEP of how to "drive" a coroutine from e.g. main()? > - Rajiv > > [1] https://gist.github.com/vrajivk/c505310fb79d412afcd5#file-sieve-py > https://gist.github.com/vrajivk/c505310fb79d412afcd5#file-channel-py > > [2] https://golang.org/doc/play/sieve.go > -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com