Tengo un bucle anidado para en mi código Python que se ve algo como esto:paralelizar anidado de bucle en IPython
results = []
for azimuth in azimuths:
for zenith in zeniths:
# Do various bits of stuff
# Eventually get a result
results.append(result)
me gustaría paralelizar este bucle en mi máquina de 4 núcleos para acelerarlo . Mirando la documentación de programación paralela de IPython (http://ipython.org/ipython-doc/dev/parallel/parallel_multiengine.html#quick-and-easy-parallelism) parece que hay una manera fácil de usar map
para paralelizar iterativo operaciones.
Sin embargo, para hacer eso necesito tener el código dentro del bucle como una función (que es fácil de hacer), y luego mapear a través de esta función. El problema que tengo es que no puedo obtener una matriz para mapear esta función. itertools.product()
produce un iterador con el que no puedo usar la función de mapa.
¿Estoy ladrando al árbol equivocado tratando de usar el mapa aquí? Hay una mejor manera de hacerlo? ¿O hay alguna forma de usar itertools.product
y luego ejecutar en paralelo con una función mapeada a través de los resultados?
función de mapa de Clojure funciona a través de secuencias, y aunque la mayoría de secuencias son contenedores, es realmente sólo una interfaz que cualquier cosa puede poner en práctica. ¿Hay algo así que puedas aprovechar en (hierro) Python? – Bill
¿Qué sucede cuando pruebas 'itertools.product'? Esa parece ser la forma de hacerlo. –
'itertools.product' parece ser ideal para crear un iterador sobre todas las combinaciones de azimuts y cenit, pero parece que no puedo paralelizar esto. ¿Alguna idea de como hacer esto? – robintw