1

私は並列pythonを使用して、複数のコンピューターでいくつかの数値計算を行っています。いくつかのクラスを含めるといいと思うまで、すべてがうまく機能していました。

ジョブを送信するためのコードは次のとおりです。

for i in xrange(n_cpus):
    jobs.append(job_server.submit(self.fcalc_rs_rp, (ch_lambdas[i], thetas, ch_n_arr[i]), (), ("import numpy as np", "from SimulationOO import *")))

単一のコンピューターでは完全に正常に動作します (これもすべてのコアを使用するため、問題ありません) が、別のサーバーを使用しようとすると、計算が停止することはありません。

問題は、ファイルがサーバーに存在しないためにロードできないため、サーバーに CPU 負荷がないことfrom SimulationOO import *です。

回避策の 1 つは、メソッド.fcalc_rs_rp()をクラスの外に出して関数にすることですが、実際にはクラス内に関数を入れたいのですが、何か良いアイデアがあるでしょうか?

その部分を使用せずfrom SimulationOO import *、代わりに depfuncs として必要なすべての関数を定義しようとすると、使用しているクラスの 1 つであるというエラーAttributeError: 'module' object has no attribute 'Layer'が発生します。Layer

どうすればこれを機能させることができるか、何かアドバイスはありますか?

ありがとうございました

4

0 に答える 0