Python类继承多处理,访问类成员时遇到麻烦
发布时间:2020-05-29 15:32:15 所属栏目:Python 来源:互联网
导读:简而言之,我说有以下内容: import multiprocessingclass Worker(multiprocessing.Process): def __init__(self): multiprocessing.Process.__init__(self) print Init self.value = None
|
简而言之,我说有以下内容: 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: 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
请注意,mp.Value的默认值为0.0.它不能设置为None. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
