On Thu, Feb 9, 2012 at 10:57 AM, Sturla Molden <sturla@molden.no> wrote:
On 09.02.2012 19:42, Mike Meyer wrote:

If threading is the only acceptable concurrency mechanism, then Python
is the wrong language to use. But you're also not building scaleable
systems, which is most of where it really matters. If you're willing
to consider things other than threading - and you have to if you want
to build scaleable systems - then Python makes a good choice.

Yes or no... Python is used for parallel computing on the biggest supercomputers, monsters like Cray and IBM blue genes with tens of thousands of CPUs. But what really fails to scale is the Python module loader! For example it can take hours to "import numpy" for 30,000 Python processes on a blue gene. And yes, nobody would consider to use Java for such systems, even though Java does not have a GIL (well, theads do no matter that much on a cluster with distributed memory anyway). It is Python, C and Fortran that are popular. But that really disproves that Python sucks for big concurrency, except perhaps for the module loader.

I'm curious about the module loader problem. Did someone ever analyze the cause and come up with a fix? Is it the import lock? Maybe it's something for the bug tracker.

--
--Guido van Rossum (python.org/~guido)