にforループネストされた:私はそれをスピードアップするために私の4コアマシン上でこのループを並列化したい並列化は、私は次のようになります私のPythonコードでのループの入れ子になっていIPython
results = []
for azimuth in azimuths:
for zenith in zeniths:
# Do various bits of stuff
# Eventually get a result
results.append(result)
を。 IPython並列プログラミングのドキュメント(http://ipython.org/ipython-doc/dev/parallel/parallel_multiengine.html#quick-and-easy-parallelism)を見ると、map
を使用して反復を並列化する簡単な方法があるようですオペレーション。
しかし、これを行うには、ループ内のコードを(これは簡単に)関数として用意して、この関数にマップする必要があります。私が持っている問題は、この関数をマップするための配列を取得できないことです。 itertools.product()
は、マップ関数を使用することができないイテレータを生成します。
ここで地図を使って間違った木を吠えていますか?それを行うより良い方法はありますか?または、itertools.product
を使用して、結果全体にマップされた関数で並列実行を行う方法がありますか?
を使用Clojureののマップ機能は、シーケンス上で動作し、ほとんどのシーケンスは、容器、何を実装することができ、その本当にただのインターフェイスされています。 (鉄)Pythonで利用できるようなものはありますか? – Bill
'itertools.product'を試してみるとどうなりますか?それはそれを行う方法のように見えます。 –
'itertools.product'は、方位角と天頂のすべての組み合わせに対してイテレータを作成するのに適しているようですが、これを並列化することはできません。どのようにこれを行うにはどのようなアイデア? – robintw