在下面的代码中,我正在创建一个multiprocessing.Array,并将其传递给2个不同的对象,其中一个将为此添加1并且将保持跟踪它没有添加一个,而另一个将减去1并且同样地跟踪它从中减去1的次数 .

import multiprocessing 

class One(multiprocessing.Process):

    def __init__(self, value):
        multiprocessing.Process.__init__(self)

    def run(self):
        run = 0
        while True:
            with multiprocessing.Lock():
                value[0] += -1
                run += 1
                print(value[0],"subracting -1", run)

class Two(multiprocessing.Process):

    def __init__(self, value):
        multiprocessing.Process.__init__(self)

    def run(self):
        run = 0
        while True:
            with multiprocessing.Lock():
                value[0] += 1
                run += 1
                print(value[0], "adding +1", run)


if __name__=='__main__':
    import os
    value = multiprocessing.Array('i', 1)
    value[0] = 0
    os.system("clear")
    one = One(value):
    two = Two(value)
    one.start()
    two.start()
    two.join()
    one.join()
    print("Done")

执行的结果是:-221加1 6953 -220加1 6954 -221减法-1 7231 -222减法-1 7232 -221加1 6955 -222减法-1 7233 -221加1 6956 -222减法-1 7234减去1的函数为7324运行而加1的函数运行为6956,所以结果应为6956-7234 = -278,但结果为-222,为什么不是-278?