parallelpythonを使用して、古いシリアルコードを並列に変換しようとしています。これは、オブジェクトの変数を変更するメソッドを持つオブジェクトに大きく依存しています。単純化のために構文を省略した簡略化された例:
class Network:
self.adjacency_matrix = [ ... ]
self.state = [ ... ]
self.equilibria = [ ... ]
...
def populate_equilibria(self):
# this function takes every possible value that self.state can be in
# runs the boolean dynamical system
# and writes an integer within self.equilibria for each self.state
# doesn't return anything
私はこのメソッドを次のように呼び出します。コード:
j1 = jobserver.submit(net2.populate_equilibria,(),(),("numpy as num"))
仕事は要約されており、長い計算が行われることを知っているので、コードが実行されていると推測します。
問題は、parallelpythonを初めて使用する場合、メソッドが呼び出されると、それに応じて変数net2.equilibriaが記述され、改訂されたオブジェクト(net2)が取得されることを期待していました。これが私のコードの仕組みであり、オブジェクトの変数に作用するメソッドを持つ独立したオブジェクトです。
むしろ、計算は明白であり、適度なタイミングですが、変数net2.equilibriaは変更されません。PPが関数とオブジェクトのみを受け取り、他の場所で計算し、オブジェクトを返すことはないかのように、古いものが残ります。
何が恋しいですか?
前もって感謝します。