无法从父进程获取数据到子进程

Unable to get data from parent process to child process

我正在使用 Python3 程序创建两个进程:从父进程中诞生的子进程。一切都从父进程开始。动机是启动一个进程,为它提供实时传感器数据,并在传感器读数超过某个阈值时结束它。

通过父进程中的线程获取sensor_data为:

t = Thread(target=dump_sensor_data,args=())
t.start()

而且我已经测试过实时数据可以在任何函数中使用

while True:
    global sensor_data
    print(sensor_data)

子进程定义为:

def fa():
    global sensor_data
    while sensor_data>300:
        print(f'I am printing {sensor_data} from fa')
        time.sleep(0.7)

我将其启动为:

processes_list=[]
pa=Process(target=fa, args=())
pa.start()
processes_list.append(pa) 

现在,我创建了另一个 watch-guard 函数,一旦 sensor_data 超过 300,它就会杀死子进程 fa()

def watchguard():
    global sensor_data
    while True:
        print(lidar1)
        if sensor_data > 300:
            for p in processes_list:
                print(f'terminating process {p}')
                p.terminate()
                p.join()
                return

但这就是发生的事情

0
terminating process <Process(Process-1, started)>

0sensor_data 的错误值,我已经验证过,应该在 1000 以上。另外,这会导致进程被杀死。

为什么数据没有传递给这个子进程?

好的,我知道了。

由于Python multiprocessing 不允许在进程之间传递全局变量,因此从未发送或更新变量。多线程不是这种情况。