Python 多处理:“self.”变量未在其他函数中/由其他函数更新?

大脚怪29

看起来我在这里运气不好……很抱歉问你们这些人。:(

我正在尝试执行以下操作:

import multiprocessing
import time

class TestClass(multiprocessing.Process):
    def __init__(self):
        super(TestClass, self).__init__()
        print("Initializing the test class...")
        self.VARIABLE = 0

    def run(self):
        while self.VARIABLE < 10:
            print("Sleeping... Variable now: " + str(self.VARIABLE))
            time.sleep(1)

    def setVar(self, VALUE):
        print("Setting new value from " + str(self.VARIABLE) + " to " + str(VALUE) + " ...")
        self.VARIABLE = VALUE


if __name__ == "__main__":
    TESTPROCESS = TestClass()
    TESTPROCESS.start()
    time.sleep(5)
    TESTPROCESS.setVar(5)
    time.sleep(5)
    TESTPROCESS.setVar(10)

但是,在结果中,它不会更新 run() 中的 self.VARIABLE,而只会更新 setVar() 中的 self.VARIABLE。

c:\Python35\python.exe Test.py
Initializing the test class...
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Setting new value from 0 to 5 ...
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Setting new value from 5 to 10 ...
Sleeping... Variable now: 0
Sleeping... Variable now: 0
[...]

我想,“self”会表明这是这个类/对象的“全局”参数吗?

即使我将 run() 函数修改为“while true: --> break”循环,同样的问题仍然发生。我的思维错误在哪里?

提前致谢...

乔维德

TESTPROCESS.start()导致该run()方法在单独的进程中执行;这就是重点。因此,您没有一个TestClass实例;你有两个,它们存在于不同的进程中。这些实例之一通过您对 的调用进行更新setVar,而另一个(由于是不同的对象)则不会。如果您希望能够在进程之间进行通信,请查看管道和队列

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章