我试图运行下面的代码多:多重跟不上结果
import multiprocessing
class test(multiprocessing.Process):
def __init__(self, name):
multiprocessing.Process.__init__(self)
self.name = name
self.finished = False
def run(self):
print("executed")
self.finished = True
test_list = []
test_list.append(test('first'))
test_list.append(test('second'))
for t in test_list:
t.start()
for t in test_list:
t.join()
for t in test_list:
print(t.finished)
,并得到结果:
executed
executed
False
False
的False
输出看起来很奇怪。我已经设置了属性finished
是在方法run
True
,且输出executed
表明run
方法已被执行。而且,如果我的方法run
self.finished=True
后添加一行print(self.finished)
立即输出将True
。为什么在多处理完成后类属性finished
发生了变化?
谢谢!
t.finish在其他进程中更新,而不是在主进程中更新。请参阅:https://docs.python.org/3/library/multiprocessing.html#sharing-state-between-processes – gammazero