python 3.8、ShareManager、更新字典

2024-05-05 04:01:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个进程,希望使用单个GUI显示当前数据并向进程发送命令

我已经创建了一个“dataProcess”,它使用ShareManager.register(…,…)提供共享dict和队列

其思想是让一个进程拥有它的本地数据,但也让“dataProcess”中的一些数据可供其他进程使用。除了通过dataUpdateQueue发送“dataProcess”之外,还会发送其他人感兴趣的进程中的所有本地数据更新。dataUpdateQueue中的数据更新消息提供要更新的共享字典标识符和新数据

当我尝试更新“dataProcess”中的DictProxy对象时,问题就开始了。对嵌套dict的更新被忽略,我无法使用普通的sharedDict[key]=changedDict语法

目前,我通过在“dataProcess”(config.sharedDictLocal)中使用与共享dict结构相同的“shadow”本地普通dict来避免这种情况

我首先在config.sharedDictLocal上使用普通的dict update命令使用共享dict更新请求,然后再次将config.sharedDictLocal分配给共享DictProxy对象

我有点担心这样做不是正确的方式,从长远来看,我的方法会遇到问题(因为——如果让这些共享dict变得可更新很容易,为什么不在库中这样实现?)


Tags: 数据对象命令registerconfig队列进程gui