Ask YC:Python and Dual core Processors
I used to use a single processor system and i noticed that i could not call up 2 instances of the Python interpreter. But on my dual core processor system, I can call up a maximum of 3 instances of the Python interpreter at any single time, after that, all i get is an error message.
I would like an explanation on this, in the light of the Global Interpreter Lock (GIL) that Python has.
Thanks.
9 comments
[ 4.5 ms ] story [ 37.2 ms ] threadYou shouldn't have any issues running Python interpretors normally.
If you run multiple instances of just "python" from the shell (assuming UNIX), there is no problem.
GIL is not involved here, it only comes into play when you have multiple threads in a single process.
I don't use IDLE, but http://mail.python.org/pipermail/patches/2006-July/020329.ht... suggests there's some "-n" switch you can IDLE with that alleviates the problem somehow.
It can happen after I have started and closed the interpeter and then start it again.
This lock is per instance of the python interpreter. Multiple instances will have a corresponding number of locks.
There are a couple of ways to have python use multiple cores or CPUs.
The first is to run multiple python instances and have them communicate between themselves using IPC mechanisms (e.g. sockets, pipes, shared memory, etc.). The non-standard "processing" module implements this very cleanly using a similar interface to the standard "threading" module.
The second is to extend Python using C and explicitly release the GIL inside the C extension. This allows both the C extension code and the Python interpreter to run simultaneously. However, the GIL will need to be reacquired before the C extension can resume any interaction with the Python interpreter.