0
我已經安裝了蒔蘿/病態及其依賴(有一些困難),我試圖在幾個進程上執行一個函數。類/屬性Model(self.xml,self.exp_data,i).SSR
是自定義的,並且依賴於其他自定義函數的加載,所以我提前道歉無法提供'可運行'代碼。簡而言之,它需要一些實驗數據,將ODE的系統與python的pysces模塊集成並計算平方和(SSR
)。並行化代碼的目的是通過多個參數集來加速這種計算。pythons多進程模塊(用蒔蘿)給出了一個無益的AssertionError
代碼:
import multiprocess
def evaluate_chisq(pop):
p = multiprocess.Pool(8)
res= p.map(lambda i:Model(self.xml,self.exp_data,i).SSR , pop)#calcualteSSR with this parameter set
return res
該錯誤消息我得到的是:
File "C:\Anaconda1\lib\site-packages\multiprocess\pool.py", line 251, in map
return self.map_async(func, iterable, chunksize).get()
File "C:\Anaconda1\lib\site-packages\multiprocess\pool.py", line 567, in get
raise self._value
AssertionError
然後,我曾嘗試使用map_async
:
def evaluate_chisq(pop):
p = multiprocess.Pool(8)
res= p.map_async(lambda i:Model(self.xml,self.exp_data,i).SSR , pop)#calcualteSSR with this parameter set
return res
它返回一個<multiprocess.pool.MapResult object at 0x0000000014AF8C18>
對象,它給了我當我嘗試使用時出現同樣的錯誤'get'方法
File "C:\Anaconda1\lib\site-packages\multiprocess\pool.py", line 567, in get
raise self._value
AssertionError
有人知道我在做什麼錯嗎?
我是'蒔蘿'和'多進程'和'pathos'作者。它看起來像你在窗戶上。你使用'multiprocess.freeze_support'嗎?這在Windows的某些情況下是必需的。 –
https://docs.python.org/2/library/multiprocessing.html#multiprocessing.freeze_support –
嗨邁克,是的,我使用Windows 7,沒有我沒有嘗試'freeze_support'。事實上,這是我的第一次並行編程,所以我仍然在尋找最好的方式來做事。但謝謝你的迴應。我會看看freeze_support。 – CiaranWelsh