gpt4 book ai didi

python - 使用多处理填充 3D 数组

转载 作者:行者123 更新时间:2023-12-01 03:05:54 25 4
gpt4 key购买 nike

我希望使用多重处理来填充以下脚本中的 data1 数组。现在,脚本运行良好,但数组没有被填充。我尝试实现 this ,但由于使用了两个迭代,我无法让它工作。帮助表示感谢;谢谢!顺便说一下,我在最新的MacOS上使用jupyter笔记本。

import numpy as np
import multiprocessing as mp
from itertools import product

#Generate random data:
data = np.random.randn(12,20,20)

#Create empty array to store the result
data1 = np.zeros((data.shape), dtype=np.float)

#Define the function
def fn(parameters):
i = parameters[0]
j = parameters[1]
data1[:,i,j] = data[:,i,j]

#Generate processes equal to the number of cores
pool = mp.Pool(processes=4)

# Generate values for each parameter: i.e. i and j
i = range(data.shape[1])
j = range(data.shape[2])

#generate a list of all combinations of the parameters
paramlist = list(product(i,j))

#call the function and multiprocessing
np.array(pool.map(fn,paramlist))
pool.close()

最佳答案

Pool.map 的作用是使用工作进程将该函数应用于给定的数据。然后,它从函数收集返回数据并将其传输到父级。

由于您的函数不返回任何内容,因此您不会得到任何结果。

发生的情况是,在每个工作线程中,data1本地副本被修改。 :-)

当您有大量数据需要修改时,多处理通常不是一个好的解决方案,因为在工作进程和父进程之间移动数据会产生开销。

首先尝试使用单个进程。

关于python - 使用多处理填充 3D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43432285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com