为什么我的var值没有变化而且没有传达?

时间:2014-11-30 17:37:42

标签: python matrix process pipe semaphore

我有一个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 | )

0 个答案:

没有答案