global interpreter lock
Michele Simionato
michele.simionato at gmail.com
Thu Sep 15 11:03:09 EDT 2005
It looks like I am reinventing Twisted and/or Kamelia.
This is code I wrote just today to simulate Python 2.5
generator in current Python:
import Queue
class coroutine(object):
def __init__(self, *args, **kw):
self.queue = Queue.Queue()
self.it = self.__cor__(*args, **kw)
def start(self):
return self.it.next()
def next(self):
return self.send(None)
def __iter__(self):
return self
def send(self, *args):
self.queue.put(args)
return self.it.next()
def recv(self):
return self.queue.get()
@classmethod
def generator(cls, gen):
return type(gen.__name__, (cls,), dict(__cor__=gen))
@coroutine.generator
def consumer(self, N):
for i in xrange(N):
yield i
cmd = self.recv()
if cmd == "exit": break
c = consumer(100)
print c.start()
for cmd in ["", "", "", "", "exit"]:
print c.send(cmd)
Michele Simionato
More information about the Python-list
mailing list