我尝试运行以下多处理代码:
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
输出看起来很奇怪。我已经在方法run
中将属性finished
设置为True
,并且输出executed
显示run
方法已经执行。如果我在方法run
中的self.finished=True
之后立即添加一行print(self.finished)
,那么输出将是True
。为什么在多重处理完成后类属性finished
会改变?你知道吗
谢谢!你知道吗
这将允许您在进程之间共享完成的值。它使用
multiprocessing.Value
来创建一个使用共享内存的共享对象。你知道吗self.finished = True
在另一个进程中执行,并且只更改该进程中的变量,但是您正在打印来自主进程的值。您需要共享的变量。你知道吗相关问题 更多 >
编程相关推荐