Python很新,我不确定这个用例。为什么我的数据没有更新?我检查了对象data
到处都是相同的(相同的内存位置)但是它的属性没有更新。
代码示例
from multiprocessing import Process
class Data(object):
def __init__(self):
self.val1 = 0
self.val2 = 0
self.val3 = 0
self.val4 = 0
class Test(object):
def __init__(self, data):
self.data = data
def update_val1(self):
self.data.val1 = 1
def update_val2(self):
self.data.val2 = 2
def update_val3(self):
self.data.val3 = 3
def update_val4(self):
self.data.val3 = 4
data = Data()
test = Test(data)
jobs = []
p = Process(target=test.update_val1)
jobs.append(p)
p.start()
p = Process(target=test.update_val2)
jobs.append(p)
p.start()
p = Process(target=test.update_val3)
jobs.append(p)
p.start()
p = Process(target=test.update_val3)
jobs.append(p)
p.start()
for job in jobs:
job.join()
print(data.val1)
print(data.val2)
print(data.val3)
print(data.val4)
我认为这不是一个好方法,我最好在队列中传递data
对象以在进程之间共享此对象是对的吗?但data
对象在每个进程中都是相同的,而不是副本,所以我很困惑为什么它不起作用.....
答案 0 :(得分:0)
data
对象是副本。
有关如何跨进程边界传递数据,请参阅https://docs.python.org/2/library/multiprocessing.html#exchanging-objects-between-processes和https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes。