如何在python中的独立进程(而不是父子关系)之间共享数据(如pandas dataframe)

如何在python中的独立进程(而不是父子关系)之间共享数据(如pandas dataframe),python,pandas,dataframe,shared-memory,Python,Pandas,Dataframe,Shared Memory,我现在正在使用python创建一个财务分析程序,该程序使用MySQL将财务数据存储在数据库中。每当调试或添加新模块时,我都需要从数据库加载数据。但是数据太大,加载数据需要很长时间。因此,我想编写一个程序,只将数据加载到内存中一次,并允许多个进程共享数据。Python库multiprocess似乎只允许在父子关系中共享数据。 我希望流程能够与完全独立的Python流程共享数据,而不是父子关系。我使用sysv_ipc创建了共享内存,但我只能以字节格式共享数据,pandas dataframe无法使用

我现在正在使用python创建一个财务分析程序,该程序使用MySQL将财务数据存储在数据库中。每当调试或添加新模块时,我都需要从数据库加载数据。但是数据太大,加载数据需要很长时间。因此,我想编写一个程序,只将数据加载到内存中一次,并允许多个进程共享数据。Python库multiprocess似乎只允许在父子关系中共享数据。
我希望流程能够与完全独立的Python流程共享数据,而不是父子关系。我使用sysv_ipc创建了共享内存,但我只能以字节格式共享数据,pandas dataframe无法使用共享内存。

此主题在许多地方和其他线程中都有介绍。使用多处理有两种方法:进程或池。进程使用多处理队列共享数据。对象被队列pickle,因此数据帧将无法工作。池可以使用多处理值、数组或管理器共享数据

还请注意,共享内存不应被单独的进程修改,否则将被复制。增加共享内存的保留计数(即创建共享内存数据的局部变量)的任何操作也是如此。查看侧边栏上的一些相关链接--->


或者我刚刚问了一个问题并发布了示例代码,展示了如何使用池共享数据帧

您是否考虑过使用客户机-服务器体系结构?在我工作的地方,我们也是这样做的。