2016-02-02 49 views
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 

有人知道我在做什么错吗?

+0

我是'莳萝'和'多进程'和'pathos'作者。它看起来像你在窗户上。你使用'multiprocess.freeze_support'吗?这在Windows的某些情况下是必需的。 –

+0

https://docs.python.org/2/library/multiprocessing.html#multiprocessing.freeze_support –

+0

嗨迈克,是的,我使用Windows 7,没有我没有尝试'freeze_support'。事实上,这是我的第一次并行编程,所以我仍然在寻找最好的方式来做事。但谢谢你的回应。我会看看freeze_support。 – CiaranWelsh

回答

相关问题