首页 > 解决方案 > 使用 multiprocessing.Pool 在 Python 中实现 Matlab 的 Parfor(多维数组的问题)

问题描述

我需要使用 Python 的 multiprocessing.Pool 实现以下 parfor 循环:

parfor i=1:numPointsEval
     ftemp_pte(:,i) = feval(func_F,pointsToEval(:,i));

我已经设法在 Python 中实现了一个顺序版本,如下所示:

def func_F(x):
    f= np.zeros((1,2))
    f[0,0]= x[0,0]
    n= max(np.size(x,0), np.size(x,1))    
    g    = 1 + 9* np.sum(x[1:n])/(n-1)
    h    = 1 - np.sqrt(f[0,0]/g)
    f[0,1] = g * h
    F= np.transpose(f)
    return F

for i in range(0, numPointsEval):
    ftemp_pte[:,i] = np.hstack(func_F(np.vstack(pointsToEval[:,i])))

我遇到的主要问题之一与ftemp_pte成为一个逐行填充的二维数组有关,而且我似乎需要使用指令hstackvstack确保生成的数组的维度是与填写的行兼容ftemp_pte

任何帮助将不胜感激。

标签: pythonmatlabmultidimensional-arraypython-multiprocessingparfor

解决方案


推荐阅读