[Stackless] Coroutines

Christian Tismer tismer at stackless.com
Thu May 27 18:34:49 CEST 2004

Jimmie Houchin wrote:

> Thanks,
> I'll give that a try.

Note that this is a simple, flat example, just like
But you can pass that channel around into any deeper
recursion or other function call.
At the moment, this is directed, one can send, one
receive. I will have a channel.transfer() function,
soon, which is undirected and exchanges data.

You can emulate this like so:

class xchannel:
	def __init__(self):
		self.c1 = channel()
		self.c2 = channel()
	def transfer(self, val):
		if self.c1.balance > 0:
			retval = self.c1.receive()
			retval = self.c2.receive()
		return retval
from stackless import *

def coro1(ch):
     print "this is coro1"
     for i in range(10):
         ret = ch.transfer("coro1 is sending %d" %i)
         print "coro 1 got this back after transfer:", ret

def coro2(ch):
     print "this is coro2"
     for i in range(10):
         ret = ch.transfer("coro2 is sending %d" %i)
         print "coro 2 got this back after transfer:", ret


cheers - chris

Christian Tismer             :^)   <mailto:tismer at stackless.com>
Mission Impossible 5oftware  :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34  home +49 30 802 86 56  mobile +49 173 24 18 776
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/

Stackless mailing list
Stackless at stackless.com

More information about the Stackless mailing list