[Stackless] Stackless on SMP
Bob Ippolito
bob at redivi.com
Mon May 24 00:32:18 CEST 2004
On May 23, 2004, at 6:15 PM, Isaac wrote:
> Bob Ippolito wrote:
>
>>
>> On May 23, 2004, at 5:38 PM, Isaac wrote:
>>
>>> Bob Ippolito wrote:
>>>
>>>> On May 23, 2004, at 4:42 PM, Isaac wrote:
>>>>
>>>>> This might be an FAQ, but I'm not finding it anywhere...
>>>>>
>>>>> How well does Stackless take advantage of machines with multiple
>>>>> processors, or Intel's Hyper-threaded processors?
>>>>
>>>> It doesn't. Python (CPython and derived implementations such as
>>>> Stackless anyway) is designed in such a way that makes it
>>>> impossible to take advantage of threads. If you want to take
>>>> advantage of multiple execution contexts then you need to use
>>>> separate processes.
>>>
>>> Is there any hope for use poor neglected SMPers? Or is the problem
>>> too deeply rooted in Python's design?
>>
>> As I said, use separate processes if you need to distribute
>> computation. It's generally much easier to code and debug, and it
>> has the added bonus that if you design your application in this way
>> then you can easily distribute it amongst multiple computers, or on a
>> single box with a bunch of CPUs.
>
> But isn't there also a lot of overhead for using multiple full-out
> instances of the interpreter in terms of memory, etc?
It's probably negligible.
That's why we have /shared/ libraries (trust me, it wasn't to
facilitate dependency hell). Let's say all of the code and constant
data in Python takes up 20mb. That's a flat fee. It's shared by all
of the running Python processes.
So then you just have the Python objects to worry about.. a few of
global objects per interpreter (code, modules, etc.), plus whatever
objects you need for your computation (which would probably be
per-thread or whatever anyways).
This is the only way to do it with the mainline implementation of
Python. Take it or leave it. It's a more scalable model than threads,
and more sane to develop in especially in a language such as Python
that isn't designed (just talking syntax and semantics here, not even
the current implementation) to do concurrency.
-bob
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2357 bytes
Desc: not available
URL: <http://www.stackless.com/pipermail/stackless/attachments/20040523/7887ffda/attachment.bin>
-------------- next part --------------
_______________________________________________
Stackless mailing list
Stackless at stackless.com
http://www.stackless.com/mailman/listinfo/stackless
More information about the Stackless
mailing list