mark florisson, 08.03.2011 18:00:
What I meant was that the
wrapper returned by the decorator would have to call the closure for
every iteration, which introduces function call overhead.
[...]
I guess we just have to establish what we want to do: do we
want to support code with Python objects (and exceptions etc), or just
C code written in Cython?

I like the approach that Sturla mentioned: using closures to implement worker threads. I think that's very pythonic. You could do something like this, for example:

    def worker():
        for item in queue:
            with nogil:
                do_stuff(item)

    queue.extend(work_items)
    start_threads(worker, count)

Note that the queue is only needed to tell the thread what to work on. A lot of things can be shared over the closure. So the queue may not even be required in many cases.

Stefan
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to