Si realmente está computar obligado, mediante el multiprocessing module es probablemente la solución más ligera de peso (en términos de consumo de memoria y dificultades de implementación.)
Si usted es de E/S de la envolvente, utilizando los threading module normalmente dará buenos resultados Asegúrese de utilizar el almacenamiento seguro de subprocesos (como la cola) para entregar datos a sus subprocesos. O bien, proporciónales una única pieza de datos que sea única para ellos cuando se generen.
PyPy se centra en el rendimiento. Tiene una serie de características que pueden ayudar con el procesamiento de procesamiento computarizado. También tienen soporte para Software Transactional Memory, aunque todavía no es calidad de producción. La promesa es que puede usar mecanismos paralelos o concurrentes más simples que el multiprocesamiento (que tiene algunos requisitos incómodos).
Stackless Python es también una buena idea. Stackless tiene problemas de portabilidad como se indicó anteriormente. Unladen Swallow fue prometedor, pero ahora ha desaparecido.Pyston es otra implementación (inacabada) de Python centrada en la velocidad. Adopta un enfoque diferente de PyPy, que puede producir mejores (o solo diferentes) aceleraciones.
¿Qué tan grande es su "colección de datos". Si es enorme, es posible que no desee iniciar subprocesos o procesos para cada uno. –
generalmente 1, 2 o 3 datos. – Ryan
@ S.Lott: ¿cómo limitaría el número de subprocesos/procesos a un número mucho más pequeño que el tamaño de los datos? –