Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Python threads and Numeric/SciPy exploit Dual Core ?

0 views
Skip to first unread message

robert

unread,
Oct 2, 2006, 6:36:11 AM10/2/06
to
Simple Python code obviously cannot use the dual core by Python threads.
Yet, a program drawing CPU mainly for matrix computations - preferably
with Numeric/SciPy - will this profit from a dual core when using 2 (or
more) Python threads?

robert

Fredrik Lundh

unread,
Oct 2, 2006, 6:46:01 AM10/2/06
to pytho...@python.org
"robert" wrote:

as long as the binding releases the GIL, sure.

</F>

Oeyvind Brandtsegg

unread,
Oct 2, 2006, 7:32:39 AM10/2/06
to pytho...@python.org
I've been trying to make my music app use dual core,
and would very much like some more detailed information on this.

Excuse my lack of knowledge,
but how do I explicitly release the GIL ?

I haven't learned this, but have found through experimentation that I
can release a thread by using time.sleep(0) inside a thread's "run
while true" loop. This seems to create an interrupt, and give other
threads a chance to do their thing.
If this is terribly wrong (it works, but I dont' know how stable it
is), please do point me in the direction of a proper way to implement
it.
As stated in an earlier post, my threads do not work on shared data,
so I have not implemented any sort of lock or mutex.

best
Oeyvind

On 10/2/06, Fredrik Lundh <fre...@pythonware.com> wrote:

> as long as the binding releases the GIL, sure.
>
> </F>
>
>
>

> --
> http://mail.python.org/mailman/listinfo/python-list
>

Fredrik Lundh

unread,
Oct 2, 2006, 8:06:40 AM10/2/06
to pytho...@python.org
Oeyvind Brandtsegg wrote:

> I've been trying to make my music app use dual core,
> and would very much like some more detailed information on this.
>
> Excuse my lack of knowledge,
> but how do I explicitly release the GIL ?

http://docs.python.org/api/threads.html

> I haven't learned this, but have found through experimentation that I
> can release a thread by using time.sleep(0) inside a thread's "run
> while true" loop. This seems to create an interrupt, and give other
> threads a chance to do their thing.

that (momentarily) blocks the current thread, and forces a rescheduling.

</F>

robert

unread,
Oct 2, 2006, 12:17:44 PM10/2/06
to
Fredrik Lundh wrote:

Thus - does Numeric/SciPy release it?
The same q about the orange (data mining) lib.

Robert

Robert Kern

unread,
Oct 2, 2006, 1:01:42 PM10/2/06
to pytho...@python.org
robert wrote:
> Fredrik Lundh wrote:
>
>> "robert" wrote:
>>
>>> Simple Python code obviously cannot use the dual core by Python threads.
>>> Yet, a program drawing CPU mainly for matrix computations - preferably
>>> with Numeric/SciPy - will this profit from a dual core when using 2 (or
>>> more) Python threads?
>>
>> as long as the binding releases the GIL, sure.
>
> Thus - does Numeric/SciPy release it?

Depends. Some of the linear algebra functions in scipy do. Most operations do
not. People are looking at adding more.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

0 new messages