Python3与大型常量数据并行

时间:2016-09-21 09:32:49

标签: python parallel-processing multiprocessing

我正在尝试平行化Python代码,并且由于大量的常量数据而将操作作为函数调用时遇到了一些问题。

我的非并行代码就是这样......

ps is a list of points  
result = array of len(ps)  
compute a,b,c being large numpy array independent of p  
for p in ps:  
    compute some stuff dependant on p, a,b,c  
    return scalar to result[i]

在没有计算大数组a,b,c的函数中包装它每次都让我

def calc(p,a,b,c):  
   compute some stuff dependant on p, a,b,c  
   return scalar

然后我使用一些常见的python模块并行调用

results = Parallel(n_jobs=num_cores)(delayed(calc)(p,a,b,c) for p in ps)

在不同内核上进行测试实际上可以在一定程度上加速进程(在4核上将时间缩短3倍是我得到的......)但是在一个核心上运行比旧循环版本慢得多加速只是没有削减它。
我把这归咎于数据交换 - 那么有没有办法解决这个限制?

0 个答案:

没有答案