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