He estado leyendo sobre Python's multiprocessing module. Todavía no creo tener una buena comprensión de lo que puede hacer.Python: ¿Procesamiento multinúcleo?
Digamos que tengo un procesador quadcore y tengo una lista con 1,000,000 enteros y quiero la suma de todos los enteros. Simplemente podría hacer:
list_sum = sum(my_list)
Pero esto solo lo envía a un núcleo.
¿Es posible, mediante el módulo de multiprocesamiento, dividir la matriz y hacer que cada núcleo obtenga la suma de su parte y devolver el valor para que se pueda calcular la suma total?
Algo así como:
core1_sum = sum(my_list[0:500000]) #goes to core 1
core2_sum = sum(my_list[500001:1000000]) #goes to core 2
all_core_sum = core1_sum + core2_sum #core 3 does final computation
se agradecería cualquier ayuda.
@Martin, creo que estos puntos muertos, por http://docs.python.org/library/multiprocessing.html#multiprocessing-programming: "un proceso que ha puesto elementos en una la cola esperará antes de terminar hasta que todos los elementos almacenados en el búfer sean alimentados por el hilo "alimentador" al conducto subyacente "- el ejemplo de punto muerto que los documentos proporcionan es muy similar a su código (es un solo subproceso al inicio, unir, obtener secuencia) y dos subprocesos en lugar de uno no ayudan. Cambie las uniones y obtiene, o simplemente elimine las uniones. –
"Funcionó para mí", probablemente porque los datos simplemente encajan en la tubería. En cualquier caso, he eliminado las uniones. –
¿Está ejecutando esto en Linux? – Nope