Распараллеливание вложенного цикла for в IPython

У меня есть вложенный цикл for в моем коде на Python, который выглядит примерно так:

results = []

for azimuth in azimuths:
    for zenith in zeniths:
        # Do various bits of stuff
        # Eventually get a result
        results.append(result)

Я хотел бы распараллелить этот цикл на своей 4-ядерной машине, чтобы ускорить его. Глядя на документацию по параллельному программированию IPython (http://ipython.org/ipython-doc/dev/parallel/parallel_multiengine.html#quick-and-easy-parallelism), кажется, что есть простой способ использовать карту для распараллеливания итерационных операций.

Однако для этого мне нужно иметь код внутри цикла как функцию (что легко сделать), а затем отображать эту функцию. У меня проблема в том, что я не могу получить массив для сопоставления этой функции. itertools.product () создает итератор, с которым я не могу использовать функцию карты.

Я лаю не на то дерево, пытаясь использовать здесь карту? Есть ли способ лучше? Или есть способ использовать itertools.product , а затем выполнить параллельное выполнение с функцией, сопоставленной с результатами?

6
задан robintw 20 February 2012 в 14:54
поделиться