Gastos generales de multiprocesamiento

Así que básicamente creé este progtwig que agrega valores a redis. Hasta ahora tengo este tiempo:

real 0m27.759s user 0m18.129s sys 0m5.580s 

Sin embargo, cuando intenté ejecutar varios subprocesos:

 if __name__ == '__main__': try: for x in range(0, NUM_THREADS): Thread(None, startProgram, None, (NUM_HOSTS/NUM_THREADS*x+1, NUM_HOSTS/NUM_THREADS*(x+1))).start() except Exception as errtxt: print errtxt 

Obtengo esto con NUM_THREADS set ot 10 :

 real 0m32.642s user 0m22.953s sys 0m11.473s 

¿Por qué mi progtwig se está ejecutando más lento con más subprocesos?

Estoy ejecutando Linux Ubuntu 11.04 y Python 2.7.1.

El resultado depende de la implementación de Python, GIL de cpython evita que los cálculos en paralelo sean más rápidos que los secuenciales.

Considere usar el módulo de multiprocessing , que ejecuta cada subproceso en su propio proceso de Python, o implementaciones alternativas de Python sin GIL como IronPython y Jython .

Puedes usar Python paralelo para esto.

Aquí hay un ejemplo de sum paralela:

http://www.parallelpython.com/content/view/17/31/#SUM_PRIMES