我现在正在使用python创建一个包含财务数据的财务分析程序。数据使用MySQL存储在数据库中。每当我调试或添加新模块时,我都需要从数据库加载数据。但是数据太大,加载数据需要很长时间。所以我想编写一个程序,只将数据加载到内存中一次,并允许多个进程共享它.Python库多进程似乎只允许共享,如果它是父子关系。 我希望该过程能够与完全独立的Python进程共享数据,而不是父子关系。我使用sysv_ipc创建了共享内存,但我只能以字节格式共享数据,而pandas dataframe无法使用共享内存。
答案 0 :(得分:0)
该主题在许多地方和其他主题中都有涉及。有两种使用多处理的方法:进程或池。进程使用多处理队列共享数据。对象被队列腌制,因此DataFrame将不起作用。池可以使用“多处理值”,“数组”或“管理器”共享数据。
还请注意,共享内存不应由单独的进程修改,否则将被复制。对于增加共享内存的保留计数(即创建共享内存数据的本地变量)的任何事物,也是如此。在侧栏上查看一些相关链接--->
或者我刚刚问了一个问题,并发布了示例代码,显示了如何使用Pools共享DataFrame。 Pandas itertuples() memory error in a Pool using shared memory