看起来我在这里运气不好……很抱歉问你们这些人。:(
我正在尝试执行以下操作:
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] 删除。
我来说两句