使工人池将行写入全局矩阵



我有一个具有pool.apply_async的工作者池,他们正在处理一个名为process_data的函数,该函数返回一个numpy1D数组。我想把这些1D阵列组合成一个矩阵。这是当前代码:

def process_data(x, y, z)
# stuff happens 
return 1Darray   

pool = mp.Pool(mp.cpu_count())
jobs = []
start = timeit.default_timer()
for i in range(100):
job = pool.apply_async(process_data, (x, y, z,))
jobs.append(job)

我应该如何获得每个返回的结果并将其添加到全局矩阵中,其中每个1Darray都是矩阵中的一行?

我需要锁和/或队列吗?

我知道np.column_stack()在矩阵中堆叠阵列,我不确定如何从multiprocessing侧实现这一点。

首先需要对apply_async返回的作业对象使用.get方法。这将为您提供一个包含(在本例中为100个(1D阵列的列表。

然后,您可以应用np.array并生成形状的2D numpy数组(length_of_list,length_of _arrays(。

def process_data(x, y, z):
# stuff happens 
return 1Darray   

pool = mp.Pool(mp.cpu_count())
jobs = []
for i in range(100):
job = pool.apply_async(process_data, (x, y, z,))
jobs.append(job.get())
matrix = np.array(jobs)

相关内容

  • 没有找到相关文章

最新更新