Excellent! that did the trick! Thanks Dag!
Chris On Wed, May 13, 2009 at 12:16 PM, Dag Sverre Seljebotn < da...@student.matnat.uio.no> wrote: > Chris Colbert wrote: > > alright i made the change and here is the code: > > > > cdef double count(int n) nogil: > > cdef int i, j, k > > cdef double out > > for i from 0 <= i < n: > > for j from 0 <= j < n: > > out = 0 > > for k from 0 <= k < n: > > out += k > > > > return out > > > > > > def myinterface(): > > cdef int n = 10000000 > > cdef double out > > out = count(n) > > return out > <SNIP> > > i presume this is because myinterface() doesn't release the gil, and > > thus waits for count() to return. > > > > How do I work this so that I can run a c-function outside the gil and > > thus make use of the multi-cores on my machine? > > When you do > > cdef double count(int n) nogil > > it merely declared that the function /can/ be run without the GIL, but > it doesn't explicitly release it. Do this: > > def myinterface(): > ... > with nogil: > out = count(n) > return out > > -- > Dag Sverre > _______________________________________________ > Cython-dev mailing list > Cython-dev@codespeak.net > http://codespeak.net/mailman/listinfo/cython-dev >
_______________________________________________ Cython-dev mailing list Cython-dev@codespeak.net http://codespeak.net/mailman/listinfo/cython-dev