私は並列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
どうすればこれを機能させることができるか、何かアドバイスはありますか?
ありがとうございました