次のスクリプトからdata1配列をマルチプロセッシングで埋めたいと思います。今のところ、スクリプトはうまく動作しますが、配列はいっぱいになりません。私はthisを実装しようとしましたが、2つのiterablesを使用しているため、動作できませんでした。ヘルプは高く評価しました。ありがとう! ところで、私は最新のMacOSでジュピターノートを使用しています。マルチプロセッシングによる3D配列の塗りつぶし
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()
コード内で '' product''関数は何ですか?遭遇する正確な問題は何ですか? – mommermi
@mommermi '製品'は 'itertools'からのものです。問題は、関数を呼び出した後にdata1配列が塗りつぶされていないということです。これを明確にするために元の投稿を編集しました。ありがとう! – hrishi