使用parallelpython時,我試圖將我的舊串行代碼轉換爲並行,這嚴重依賴於具有更改該對象變量的方法的對象。其中我省略了語法支持簡單的剝離例如:在ParallelPython中,對象的方法(object.func())無法處理對象的變量(object.value)
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"))
作業被sumbitted,我知道一個很長的計算需要所以我推測我的代碼已經運行。
問題是,我是新來的parallelpython,我期待,當調用方法時,變量net2.equilibria將被相應地編寫,並且我會得到一個修改後的對象(net2)。這就是我的代碼的工作方式,獨立對象的方法對對象的變量起作用。
相反,雖然計算是明顯的,併合理計時,但變量net2.equilibria保持不變。 就好像PP只接受函數和對象,在其他地方計算它,但從不返回對象,所以我留下了舊的。
我錯過了什麼?
在此先感謝。
感謝。這非常全面。 – 2012-03-30 12:13:00