Python初心者として、私は最適化ルーチンへの入力として機能する関数のいくつかのセクションを並列化しようとしています。この関数fは、与えられたベクトルbの対数尤度、勾配およびヘッセ行列を返します。この関数には、3つの独立したループ関数、loop_1
,loop_2
、およびloop_3
があります。Pythonでネストされた関数を並列化する
最も効率的な実装は何ですか? 3つの並行プロセスで3つのループ関数を並列化するか、一度に1つのループを並列化するか?そして、これはどのように実装できますか?私の入れ子のループ関数が一般的な名前空間にないので、マルチプロセッシングパッケージを使用するとき、私は 'pickle'エラーを受け取ります。
def f(b):
# Do something computational intensive on b
def calc(i, j):
return u, v, w
def loop_1():
for i in range(1:1000):
c, d, e = calc(i, 0)
for j in range(1:200):
f, g, h = calc(i, j)
return x, y, z
def loop_2():
# similar to loop_1
def loop_3():
# similar to loop_1
# Aggregate results from the three loops
return u, v, w
このメソッドは、関数の関数に対して酸洗いエラーを生成します。 – Simon