Python 为什么我的var值不';不改变,不沟通?

Python 为什么我的var值不';不改变,不沟通?,python,matrix,process,pipe,semaphore,Python,Matrix,Process,Pipe,Semaphore,我有一个Python程序来创建两个数组,将它们相乘,并将相乘的结果相加 这是通过过程完成的 如果我创建两个进程,程序将创建两个具有两行两列的数组。 他们应该更改全局varresultado的值 但是,正如您在代码中的注释中所看到的,第二个进程错误地接收到varresultado的值 可能是什么 程序的某些部分已被隐藏 resultado = [] def multiplicacao(pipe_filho): if flag: sem.acquire() glo

我有一个Python程序来创建两个数组,将它们相乘,并将相乘的结果相加

这是通过过程完成的

如果我创建两个进程,程序将创建两个具有两行两列的数组。 他们应该更改全局var
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 | )

进程之间不共享全局变量。因此,我不知道你期望这是怎么回事。我没有一个真正的答案,但我看到你只是加入了上一个
newP
过程(两次)。的第一个
将创建一个
进程
,将其分配给
newP
,然后它将创建第二个进程并将其分配给相同的
newP
。您的第二个
for
join()
第二个
newP
两次(但此时您丢失了对第一个
newP
的引用)此外,进程不共享内存(线程会)。也许你想用线?或者将全局
resultado
放入管道中?(我不能完全理解代码,但是…我的坏:-()