首页 > 解决方案 > Matlab 在 Python 中的 Parfor 与 ProcessPoolExecutor(多维数组的问题)

问题描述

如果这个问题可能很简单,我很抱歉,我是在 Python 中使用并行性的新手......我需要使用 Python 的 ProcessPoolExecutor 实现以下 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])))

我使用 ProcessPoolExecutor 的主要问题主要与ftemp_pte作为一个逐行填充的二维数组有关,而且我似乎需要使用说明hstackvstack确保生成的数组的维度是兼容的填充的行ftemp_pte

任何帮助将不胜感激。

标签: pythonmatlabmultidimensional-arrayconcurrent.futuresparfor

解决方案


推荐阅读