Почему класс или список в питоне имеет идентификатор (), но имеет другую переменную - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь поделиться некоторыми в другом процессе.Существует очень простой способ использовать mp.Array ().Здесь я использую класс, как показано ниже:

import multiprocessing as mp
import time

class SharedData(object):
    shared_data = 0

class A(mp.Process):
    def __init__(self, data):
        super(A, self).__init__()
        self.data = data

    def run(self):
        while True:
            time.sleep(0.5)
            print('b_address', self.data)
            print('a_data', id(self.data.shared_data))
            print('a_class', id(self.data))
            self.data.shared_data += 1

class B(mp.Process):
    def __init__(self, data):
        super(B, self).__init__()
        self.data = data

    def run(self):
        while True:
            time.sleep(0.5)
            print('b_address', self.data)
            print('b_data', id(self.data.shared_data))
            print('b_class', id(self.data))
            print(self.data.shared_data)

if __name__ == '__main__':
    data = SharedData()
    a = A(data)
    b = B(data)

    a.start()
    b.start()

Я обнаружил, что идентификатор класса SharedData в классе A и классе B совпадают.А в классе B идентификатор shared_data является константой.Но идентификатор shard_data в классе A меняется.На мой взгляд, если идентификаторы двух классов совпадают, классы разделяют одну и ту же память.Но почему я не могу поделиться данными в процессах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...