0

我已经安装了 dill/pathos 及其依赖项(有一些困难),我正在尝试在多个进程中执行一个功能。类/属性Model(self.xml,self.exp_data,i).SSR是定制的,并且依赖于其他自定义函数的负载,所以我提前为无法提供“可运行”代码道歉。然而,简而言之,它需要一些实验数据,将 ODE 系统与 python 的 pysces 模块集成并计算平方和 ( SSR)。并行化此代码的目的是使用多个参数集加速此计算。

编码:

    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>对象,当我尝试使用MapResult“get”方法时,它给了我同样的错误

  File "C:\Anaconda1\lib\site-packages\multiprocess\pool.py", line 567, in get
    raise self._value

AssertionError

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

4

1 回答 1

2

在 Windows 上,您需要使用freeze_supportfrom __main__

请参阅https://docs.python.org/2/library/multiprocessing.html#multiprocessing.freeze_support

于 2016-03-23T12:57:46.490 回答