В приведенном ниже коде я создаю многопроцессорный массив, передавая его двум различным объектам, один из них добавит 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?