Python类继承多处理,访问类成员时遇到问题

Python类继承多处理,访问类成员时遇到问题,python,multiprocessing,Python,Multiprocessing,简言之,假设我有以下几点: import multiprocessing class Worker(multiprocessing.Process): def __init__(self): multiprocessing.Process.__init__(self) print "Init" self.value = None def run(self): print "Running" sel

简言之,假设我有以下几点:

import multiprocessing

class Worker(multiprocessing.Process):
    def __init__(self):
        multiprocessing.Process.__init__(self)
        print "Init"
        self.value = None

    def run(self):
        print "Running"
        self.value = 1

p = Worker()
p.start()
p.join()
print p.value
我希望输出为:

Init
Running
1
而是

Init
Running
None
有人能给我解释一下为什么会这样吗?我不明白什么,我应该如何正确地去做


谢谢。

当你说
p.start()
时,一个独立的进程从主进程中分离出来。将复制所有变量值。因此,主进程有一个
p
副本,而分叉进程有一个单独的
p
副本。
Worker
修改分叉进程的
p.value
副本,但主进程的
p.value
仍然是
None

有许多方法可以在进程之间共享对象。在这种情况下,也许最简单的方法是使用:


请注意,
mp.Value
的默认值为
0.0
。无法将其设置为
None

谢谢。似乎在构造函数中创建num值(而不是在main中构造并传递它)也可以正常工作。我暂时不接受这个答案(我听说这是SO的惯例)。
import multiprocessing as mp

class Worker(mp.Process):
    def __init__(self):
        print "Init"
        mp.Process.__init__(self)
        self.num = mp.Value('d', 0.0)

    def run(self):
        print "Running"
        self.num.value = 1

p = Worker()
p.start()
p.join()
print p.num.value