我想将状态属性(布尔)传递给第二个进程。主过程初始化该过程,并在构造函数中传递About属性。根据此属性,第二个进程应打印不同的值。 类“ TestClass”位于单独的文件中。
这是第二个文件中的子流程(我们将其称为subprocess.py),该文件不会显示我想要的结果。
from multiprocessing import Process, Value
import time
# this class is executed in a second process and reacts to changes in
# in the main process
class TestClass(Process):
def __init__(self, value):
Process.__init__(self)
self.__current_state = value
def run(self):
while True:
if bool(self.__current_state):
print("Hello World")
else:
print("Not Hello World")
time.sleep(0.5)
这是执行的主要过程
import time
from SubProcess import TestClass
# main procedur
value_to_pass = Value('i', False).value
test_obj = TestClass(value_to_pass)
test_obj.start()
while True:
if bool(value_to_pass):
value_to_pass = Value('i', False).value
else:
value_to_pass = Value('i', True).value
# wait some time
time.sleep(0.4)
最后,我希望有一个 Not Hello World 和 Hello World 的交替输出,这将成功指示状态参数的传递。
此刻,它仅根据我对 value_to_pass 的初始化输出打印结果。显然,它永远不会改变其价值。
使用 global 属性不符合我的要求,因为这是不同文件的问题。此外,使用对象属性恰好适合我使用线程的情况。稍后我将使用RaspberryPi。我将使用它处理多个传感器。因此,我不得不使用多个进程。
谢谢!