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.
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.
You shouldn't have any issues running Python interpretors normally.
It can happen after I have started and closed the interpeter and then start it again.