[snip]I use a coroutine/generator framework for simulating concurrent processes.
To do this, I write all my functions using the general form:
while True: do stuff yield None
To make these generator functions compatible with a standard thread interface, I attempted to write a decorator which converts a standard function into a generator function (code attached below).
@generatorize
def f():
while True:
return 1
def g():
while True:
yield 1
print g() print f()
I'm a little confused as to what you're trying to do here. The f() function, in particular, doesn't make much sense -- the 'while True' doesn't do anything since the 'return 1' is executed on the first time through the loop. If you really do want to turn your functions into generators of the form:
while True: do stuff yield None
why can't you just do:
>>> def generatorize(f): ... def new_f(*args, **kwds): ... while True: ... f(*args, **kwds) ... yield None ... return new_f ... >>> @generatorize ... def f(): ... return 1 ... >>> i = f() >>> print i.next() None >>> print i.next() None
Basically, I've assumed that 'do stuff' is the function that's being wrapped.
Steve -- http://mail.python.org/mailman/listinfo/python-list