Kann keine Klassenvariablen mit Multiprocessing.Process-Objekt in Python3 ändern

Wenn ich eine Klasse mit einer Klassenvariablen schreibe, zwei Klassenobjekte generiere und den Wert der Klassenvariablen mithilfe einer Methode eines der beiden Objekte ändere, wird der Wert der Klassenvariablen natürlich auch für das andere Objekt geändert. Das meine ich mit Code:

class DemoClass:
    ClassVariable = False

    def __init__(self):
        pass

    def do(self):
        print(DemoClass.ClassVariable)
        DemoClass.ClassVariable = True


class1 = DemoClass()
class1.do()  # False
class2 = DemoClass()
class2.do()  # True

Wenn ich jedoch dasselbe mit multiprocessing.Process mache, funktioniert es nicht. Der Wert der Klassenvariablen wird nur für das Objekt geändert, das ihn geändert hat:

import multiprocessing

class DemoProcess(multiprocessing.Process):
    ClassVariable = False

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

    def run(self):
        print(DemoProcess.ClassVariable)
        DemoProcess.ClassVariable = True
        print(DemoProcess.ClassVariable)


if __name__ == '__main__':
    process_list = []
    p1 = DemoProcess()
    process_list.append(p1)
    p1.start()  # False True
    p2 = DemoProcess()
    process_list.append(p2)
    p2.start()  # False True; should be: True True

    for p in process_list:
        p.join()

Der Code verhält sich so, als ob jeder Prozess eine neue Klassenvariable generiert. Mache ich etwas falsch

Antworten auf die Frage(2)

Ihre Antwort auf die Frage