私はPythonでマルチプロセッシングを試みています。私はベクターを追加するコードを書いていますが、関数から出力を得ることができませんでした。 0ではなく、2Pythonマルチプロセッシングデータが正しく出力されない
from multiprocessing import Process
import numpy as np
numThreads = 16
num = 16
numIter = num/numThreads
X = np.ones((num, 1))
Y = np.ones((num, 1))
Z = np.zeros((num, 1))
def add(X,Y,Z,j):
Z[j] = X[j] + Y[j]
if __name__ == '__main__':
jobs = []
for i in range(numThreads):
p = Process(target=add, args=(X, Y, Z, i,))
jobs.append(p)
for i in range(numThreads):
jobs[i].start()
for i in range(numThreads):
jobs[i].join()
print Z[0]
編集アウトどの意味、出力Zプリント:clockerのアドバイスを取り、これに私のコードを変更:
import multiprocessing
import numpy as np
numThreads = 16
numRows = 32000
numCols = 2
numOut = 3
stride = numRows/numThreads
X = np.ones((numRows, numCols))
W = np.ones((numCols, numOut))
B = np.ones((numRows, numOut))
Y = np.ones((numRows, numOut))
def conv(idx):
Y[idx*stride:idx*stride+stride] = X[idx*stride:idx*stride+stride].dot(W) + B[idx*stride:idx*stride+stride]
if __name__=='__main__':
pool = multiprocessing.Pool(numThreads)
pool.map(conv, range(numThreads))
print Y
と出力ではなくSaxpのYです。
「出力できなかった」とはどういう意味ですか? –