Как реализовать метод multiprocessing.Lock () в классе? - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь обновлять значение count каждый раз, когда вводится функция Af.Я пытался использовать метод блокировки таким образом, но результаты не верны.Пожалуйста, помогите мне.

импортируйте многопроцессорную обработку как mp

class Trial():
    lock = mp.Lock()
    def __init__(self):
        self.a = 1
        self.b = 3
        with self.lock:
            self.count = 0


    def f(self,x):
        self.a += x
        self.action(x)

        with self.lock:
            self.count += 1

        return self.a,self.b,self.count

    def action(self,act):
        self.b *= act

if __name__ == '__main__':
    this = list([1,2,3,4,5])
    A = Trial()
    pool = mp.Pool()

    result = pool.map(func=A.f, iterable=this)

    print(result)

[(2, 3, 1), (3, 6, 1), (4, 9, 1), (5, 12, 1), (6, 15, 1)]

Я получаю одинаковое значение счета для каждого процесса.Я думаю, что каждый процесс работает со своей копией счета.Как сделать подсчет общим для всех процессов?

...