Sí, eso quería decir: si miguialberto quiere llamar varias veces al proceso, y además, sabe que la ejecución en paralelo de esos procesos no se afectan o interfieren entre sí, entonces es normal poder ejecutarlos en paralelo.
Mi comentario iba más por lo de no ejecutar más procesos que procesadores o nucleos, ya que si pones demás, empezarán a competir entre ellos, y el tiempo de cambio de contexto entre procesos, por parte de las procesadores, será muy alto.
En una ocasión contaba con un ordenador con dos procesadores Xeon con dos núcleos cada uno de ellos (curiosamente, quitando el hyperthreading, iba todo más rápido).
En teoría, el número máximo de procesos corriendo a la vez era cuatro, pero... recordando que al menos uno de los procesadores necesitaba estar ocupado en las tareas administrativas y gráficas del ordenador, aparte de dar servicio al resto de procesos del sistema. Aun así, se puso el límite en cuatro, aun sabiendo que el cuarto proceso tardaría más de la cuenta.
Enseguida se vio que no era viable tener esos cuatro procesos:
1.- Competían en el acceso a memoria: no estaba activado el "Dual Channel" en las memorias RAM, ya que cada chip tenía una velocidad de refresco distinta
2.- Competían con la ocupación de memoria: si, en un momento dado, los procesos necesitaban memoria para sus cálculos, podía darse el caso de que la llegaban a agotar, empezando a usar la memoria de intercambio, agravando el paso 3.-
3.- Competían en el acceso a disco: si coincidían en el momento de la escritura y lectura a disco.
Después de unas cuantas jornadas de pruebas, se llegó a las siguientes conclusiones:
1.- Ejecutar 4 procesos de forma secuencial tardaba X minutos
2.- Ejecutar 4 procesos de forma paralela tardaba X*250%
, y no estaba asegurada la terminación
3.- Ejecutar 4 procesos, tomando 3 de forma paralela tardaba X*90%
4.- Ejecutar 4 procesos, tomando 2 de forma paralela tardaba X*70%
(creo que he puesto las cifras correctas)
Así que la solución final fue la de impedir la ejecución de más de dos procesos simultáneos. Esto permitía ejecutar los procesos de forma rápida, y dejaba espacio para ejecutar otros procesos más secundarios.
Como conclusión final: que no solo hay que ver el número de procesadores, sino el resto de cuellos de botella: memoria, discos, interrupciones, etc.