gpt4 book ai didi

Python多处理: "self."variable not updated in/by other functions?

转载 作者:行者123 更新时间:2023-12-01 02:50:31 24 4
gpt4 key购买 nike

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

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

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 进行更新,而另一个(由于是不同的对象)则不会。如果您希望能够在进程之间进行通信,请查看 pipes and queues .

关于Python多处理: "self."variable not updated in/by other functions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44850487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com