파이썬에서 멀티 프로세싱을 시도하고 있습니다. 벡터를 추가하는 코드를 작성했지만 함수에서 출력을 가져올 수 없습니다. clocker의 조언을 툭,이 내 코드 변경 : 어느 의미, 출력 Z는 0이 아니라 편집파이썬 멀티 프로세싱 데이터가 잘못 출력되었습니다.
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]
2.보다 출력합니다
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입니다 .
"출력을 얻을 수 없음"이란 무엇을 의미합니까? –