¿Cómo procesar una lista en paralelo en Python?

Escribí un código como este:

def process(data): #create file using data all = ["data1", "data2", "data3"] 

Quiero ejecutar la función de proceso en mi lista completa en paralelo, ya que están creando archivos pequeños, por lo que no me preocupa la escritura en el disco, pero el procesamiento demora mucho, así que quiero usar todos mis núcleos.

¿Cómo puedo hacer esto usando módulos predeterminados en python 2.7?

Puedes probar un ejemplo básico como:

 from threading import Thread def process(data): print "processing %s" % data all = ["data1", "data2", "data3"] for task in all: t = Thread(target=process, args=(task,)) t.start() 

Aquí hay una respuesta y un breve tutorial que muestra cómo permitir que la persona que llama haga una pausa para que los hilos se unan, si así lo desea.

En lo que respecta al uso de todos sus núcleos, no tengo información sobre eso, pero aquí hay algunos recursos que podrían ser útiles: [ 1 ], [ 2 ], [ 3 ]

O:

 from threading import Thread def process(data): print("processing {}".format(data)) l= ["data1", "data2", "data3"] for task in l: t = Thread(target=process, args=(task,)) t.start() 

O (solo versión de python> 3.6.0):

 from threading import Thread def process(data): print(f"processing {data}") l= ["data1", "data2", "data3"] for task in l: t = Thread(target=process, args=(task,)) t.start() 

Hay una plantilla de uso de multiprocessing , la esperanza es útil.

 from multiprocessing.dummy import Pool as ThreadPool def process(data): print("processing {}".format(data)) alldata = ["data1", "data2", "data3"] pool = ThreadPool() results = pool.map(process, alldata) pool.close() pool.join()