我有一个Python程序来创建两个数组,将它们相乘并添加乘法结果。
这是通过流程完成的。
如果我创建两个进程,程序将创建两个包含两行和两列的数组。
他们应该更改全局变量resultado
的值。
但是,正如您在代码中的注释中所看到的,第二个进程错误地接收到var resultado
的值。
它可能是什么?
程序的某些部分已被隐藏。
resultado = []
def multiplicacao(pipe_filho):
if flag:
sem.acquire()
global resultado
# print resultado -->
# Process 1: [] (Correct) ;
# Process 2: [] (Incorrect should be [[47, 6]])
myVar = productMatrix(A[e], B)
resultado += myVar
# print resultado -->
# Process 1: [[47, 6]] (Correct) ;
# Process 2: [[36, 127]] (Correct)
for i in range(len(myVar)):
for j in range(len(myVar[i])):
soma.value += myVar[i][j]
pipe_filho.send(myVar)
if flag:
sem.release()
pipe_filho, pipe_pai = Pipe()
for i in range(2):
e = i
newP = Process(target=multiplicacao, args=(pipe_filho,))
newP.start()
myVar = pipe_pai.recv()
for i in range(2):
newP.join()
# printMatrix(resultado) -->
# | 36 95 | (Incorrect should be | 36 95 36 127 | )