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



我正在使用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) 

现在,我创建了另一个监视保护函数,一旦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)>

0是我验证过的sensor_data的错误值,应该在1000以上。此外,这会导致进程被扼杀。

为什么数据没有传递到此子进程?

好的,我明白了。

由于Python多处理不允许在进程之间传递全局变量,因此从未发送或更新该变量。多线程的情况并非如此。

最新更新