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

2024-06-16 11:51:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正努力做到以下几点:

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()中,但仅在setVar()中。在

^{pr2}$

我想,“self”表示这是这个类/对象的“global”参数?在

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

提前谢谢。。。在


Tags: runimportselftimevaluedefsleepmultiprocessing
1条回答
网友
1楼 · 发布于 2024-06-16 11:51:26

^{}使run()方法在一个单独的进程中执行;这差不多就是全部的要点。因此,您没有一个TestClass实例;您有两个实例,它们存在于不同的进程中。其中一个实例通过调用setVar进行更新,而另一个实例(由于是不同的对象)没有更新。如果希望能够在进程之间进行通信,请查看pipes and queues。在

相关问题 更多 >