在两个python进程之间传递状态属性

时间:2018-12-20 13:37:20

标签: python process multiprocessing

我想将状态属性(布尔)传递给第二个进程。主过程初始化该过程,并在构造函数中传递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。我将使用它处理多个传感器。因此,我不得不使用多个进程。

谢谢!

0 个答案:

没有答案