使用Manager实现多进程的数据共享

一、使用场景
最近有接触关于RFID识别系统,其中可能有最多有4个天线进行接收信号.
期望可以通过接收到的信号然后进行判断车辆的方向。故四个天线采集信息需要共享。
本部分主要实现四个同一时刻的数据采集信息。
二、知识点及代码结构
(1.)知识点
使用multiprocessing下的Manager可以实现服务端的数据共享,多进程同时修改一份数据。
共享字典的生成:manager.dict()
共享列表的生成:manager.list(range(3)),里面可以默认放置一些数据,如range(3)
(2)代码结构
一个函数:用来定义一般的进程记录数据
一个主进程:主进程中调用4个子进程,并分别等待进程完毕

三、具体代码
from multiprocessing import Process,Manager

def f(dir_ant,data_ant):
“”"
此处用于展示采集到的天线信息
:param dir_ant: 四个天线的出入口定义
:param data_list: 天线采集的数据,此处直接引用不再写如何获取天线的数据
:return:
“”"
dir_ant [“ant1”] = “in”
dir_ant[“ant2”] = “out”
dir_ant[“ant3”] = “in”
dir_ant[“ant4”] = “out”
print("********************************")
print(dir_ant)
print(data_ant)

if name == “main”:
with Manager() as manager:
#生成可在多进程中传递、共享的字典和列表
d = manager.dict()
l = manager.list()
p_list = []

    for i in range(4):
        p = Process(target = f,args=(d,l))
        p.start()
        p_list.append(p)

    for pro in p_list:
        pro.join()

四、运行结果
在这里插入图片描述
显然4个进程实现了数据的共享。

发布了55 篇原创文章 · 获赞 4 · 访问量 7629

猜你喜欢

转载自blog.csdn.net/qq_44801116/article/details/101649830